aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2018-01-27 21:05:20 -0800
committerZeyla Hellyer <[email protected]>2018-01-27 21:05:20 -0800
commit13b0de121eda30e59849fd442c8a0926a63df2b8 (patch)
treed625052bca668b7b92016eb819a8b1b2ca5e475f /src
parentCorrectly set role's position on new roles (diff)
downloadserenity-13b0de121eda30e59849fd442c8a0926a63df2b8.tar.xz
serenity-13b0de121eda30e59849fd442c8a0926a63df2b8.zip
Reduce number of clones in the library
Diffstat (limited to 'src')
-rw-r--r--src/model/guild/mod.rs34
-rw-r--r--src/voice/audio.rs2
-rw-r--r--src/voice/streamer.rs2
3 files changed, 20 insertions, 18 deletions
diff --git a/src/model/guild/mod.rs b/src/model/guild/mod.rs
index 9a51956..142fc73 100644
--- a/src/model/guild/mod.rs
+++ b/src/model/guild/mod.rs
@@ -32,6 +32,8 @@ use builder::{EditGuild, EditMember, EditRole};
use constants::LARGE_THRESHOLD;
#[cfg(feature = "model")]
use std;
+#[cfg(feature = "model")]
+use std::borrow::Cow;
/// A representation of a banning of a user.
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Hash, Serialize)]
@@ -900,23 +902,23 @@ impl Guild {
let name_a = match a.nick {
Some(ref nick) => {
if contains_case_insensitive(&a.user.read().name[..], prefix) {
- a.user.read().name.clone()
+ Cow::Owned(a.user.read().name.clone())
} else {
- nick.clone()
+ Cow::Borrowed(nick)
}
},
- None => a.user.read().name.clone(),
+ None => Cow::Owned(a.user.read().name.clone()),
};
let name_b = match b.nick {
Some(ref nick) => {
if contains_case_insensitive(&b.user.read().name[..], prefix) {
- b.user.read().name.clone()
+ Cow::Owned(b.user.read().name.clone())
} else {
- nick.clone()
+ Cow::Borrowed(nick)
}
},
- None => b.user.read().name.clone(),
+ None => Cow::Owned(b.user.read().name.clone()),
};
closest_to_origin(prefix, &name_a[..], &name_b[..])
@@ -976,23 +978,23 @@ impl Guild {
let name_a = match a.nick {
Some(ref nick) => {
if contains_case_insensitive(&a.user.read().name[..], substring) {
- a.user.read().name.clone()
+ Cow::Owned(a.user.read().name.clone())
} else {
- nick.clone()
+ Cow::Borrowed(nick)
}
},
- None => a.user.read().name.clone(),
+ None => Cow::Owned(a.user.read().name.clone()),
};
let name_b = match b.nick {
Some(ref nick) => {
if contains_case_insensitive(&b.user.read().name[..], substring) {
- b.user.read().name.clone()
+ Cow::Owned(b.user.read().name.clone())
} else {
- nick.clone()
+ Cow::Borrowed(nick)
}
},
- None => b.user.read().name.clone(),
+ None => Cow::Owned(b.user.read().name.clone()),
};
closest_to_origin(substring, &name_a[..], &name_b[..])
@@ -1081,16 +1083,16 @@ impl Guild {
.sort_by(|a, b| {
let name_a = match a.nick {
Some(ref nick) => {
- nick.clone()
+ Cow::Borrowed(nick)
},
- None => a.user.read().name.clone(),
+ None => Cow::Owned(a.user.read().name.clone()),
};
let name_b = match b.nick {
Some(ref nick) => {
- nick.clone()
+ Cow::Borrowed(nick)
},
- None => b.user.read().name.clone(),
+ None => Cow::Owned(b.user.read().name.clone()),
};
closest_to_origin(substring, &name_a[..], &name_b[..])
diff --git a/src/voice/audio.rs b/src/voice/audio.rs
index 24a4fcd..21f8f31 100644
--- a/src/voice/audio.rs
+++ b/src/voice/audio.rs
@@ -24,7 +24,7 @@ pub trait AudioReceiver: Send {
data: &[i16]);
}
-#[derive(Clone)]
+#[derive(Clone, Copy)]
pub enum AudioType {
Opus,
Pcm,
diff --git a/src/voice/streamer.rs b/src/voice/streamer.rs
index 99be4de..a0334f3 100644
--- a/src/voice/streamer.rs
+++ b/src/voice/streamer.rs
@@ -25,7 +25,7 @@ struct InputSource<R: Read + Send + 'static> {
impl<R: Read + Send> AudioSource for InputSource<R> {
fn is_stereo(&mut self) -> bool { self.stereo }
- fn get_type(&self) -> AudioType { self.kind.clone() }
+ fn get_type(&self) -> AudioType { self.kind }
fn read_pcm_frame(&mut self, buffer: &mut [i16]) -> Option<usize> {
for (i, v) in buffer.iter_mut().enumerate() {