diff options
| author | Zeyla Hellyer <[email protected]> | 2018-01-27 21:05:20 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2018-01-27 21:05:20 -0800 |
| commit | 13b0de121eda30e59849fd442c8a0926a63df2b8 (patch) | |
| tree | d625052bca668b7b92016eb819a8b1b2ca5e475f /src | |
| parent | Correctly set role's position on new roles (diff) | |
| download | serenity-13b0de121eda30e59849fd442c8a0926a63df2b8.tar.xz serenity-13b0de121eda30e59849fd442c8a0926a63df2b8.zip | |
Reduce number of clones in the library
Diffstat (limited to 'src')
| -rw-r--r-- | src/model/guild/mod.rs | 34 | ||||
| -rw-r--r-- | src/voice/audio.rs | 2 | ||||
| -rw-r--r-- | src/voice/streamer.rs | 2 |
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() { |