diff options
| author | Mei Boudreau <[email protected]> | 2017-10-12 18:18:31 -0400 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-10-12 15:18:31 -0700 |
| commit | 9b0c053725e04c60eb7ddcfeb847be4189b3dbf6 (patch) | |
| tree | 6e1c2f5a38188f389bc14df7691a39549c9c2128 /src | |
| parent | Optimize Member::roles (diff) | |
| download | serenity-9b0c053725e04c60eb7ddcfeb847be4189b3dbf6.tar.xz serenity-9b0c053725e04c60eb7ddcfeb847be4189b3dbf6.zip | |
Add try_opt macro for substitute
Diffstat (limited to 'src')
| -rw-r--r-- | src/framework/standard/args.rs | 13 | ||||
| -rw-r--r-- | src/internal/macros.rs | 7 | ||||
| -rw-r--r-- | src/model/guild/member.rs | 5 |
3 files changed, 13 insertions, 12 deletions
diff --git a/src/framework/standard/args.rs b/src/framework/standard/args.rs index 82a9e3f..7e3d579 100644 --- a/src/framework/standard/args.rs +++ b/src/framework/standard/args.rs @@ -18,7 +18,7 @@ impl<E: StdError> From<E> for Error<E> { fn from(e: E) -> Self { Error::Parse(e) } -} +} impl<E: StdError> StdError for Error<E> { fn description(&self) -> &str { @@ -115,10 +115,7 @@ impl Args { let mut vec = Vec::with_capacity(i as usize); for _ in 0..i { - vec.push(match self.delimiter_split.shift() { - Some(x) => x, - None => return None, - }); + vec.push(try_opt!(self.delimiter_split.shift())); } Some(vec) @@ -164,8 +161,8 @@ impl Args { where T::Err: StdError { Iter::<T>::new(&mut self).collect() } - - /// Provides an iterator of items: (`T: FromStr`) `Result<T, T::Err>`. + + /// Provides an iterator of items: (`T: FromStr`) `Result<T, T::Err>`. pub fn iter<T: FromStr>(&mut self) -> Iter<T> where T::Err: StdError { Iter::new(self) } @@ -235,7 +232,7 @@ impl<'a, T: FromStr> Iter<'a, T> where T::Err: StdError { impl<'a, T: FromStr> Iterator for Iter<'a, T> where T::Err: StdError { type Item = Result<T, T::Err>; - + fn next(&mut self) -> Option<Self::Item> { if self.args.is_empty() { None diff --git a/src/internal/macros.rs b/src/internal/macros.rs index 4ee43d3..92a21c1 100644 --- a/src/internal/macros.rs +++ b/src/internal/macros.rs @@ -181,3 +181,10 @@ macro_rules! enum_number { } } } + +macro_rules! try_opt { + ($x:expr) => (match $x { + Some(v) => v, + None => return None, + }); +} diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs index 20b45b8..83cb863 100644 --- a/src/model/guild/member.rs +++ b/src/model/guild/member.rs @@ -159,10 +159,7 @@ impl Member { #[cfg(all(feature = "cache", feature = "utils"))] pub fn colour(&self) -> Option<Colour> { let cache = CACHE.read().unwrap(); - let guild = match cache.guilds.get(&self.guild_id) { - Some(guild) => guild.read().unwrap(), - None => return None, - }; + let guild = try_opt!(cache.guilds.get(&self.guild_id)).read().unwrap(); let mut roles = self.roles .iter() |