aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMei Boudreau <[email protected]>2017-10-12 18:18:31 -0400
committerZeyla Hellyer <[email protected]>2017-10-12 15:18:31 -0700
commit9b0c053725e04c60eb7ddcfeb847be4189b3dbf6 (patch)
tree6e1c2f5a38188f389bc14df7691a39549c9c2128 /src
parentOptimize Member::roles (diff)
downloadserenity-9b0c053725e04c60eb7ddcfeb847be4189b3dbf6.tar.xz
serenity-9b0c053725e04c60eb7ddcfeb847be4189b3dbf6.zip
Add try_opt macro for substitute
Diffstat (limited to 'src')
-rw-r--r--src/framework/standard/args.rs13
-rw-r--r--src/internal/macros.rs7
-rw-r--r--src/model/guild/member.rs5
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()