From c4c56d3c04af282bbfe807b401337970dde352ce Mon Sep 17 00:00:00 2001 From: acdenisSK Date: Fri, 17 Nov 2017 19:57:01 +0100 Subject: Use a private function to reduce repetition --- src/framework/standard/mod.rs | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) (limited to 'src/framework') diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs index 4148827..792814e 100644 --- a/src/framework/standard/mod.rs +++ b/src/framework/standard/mod.rs @@ -435,7 +435,7 @@ impl StandardFramework { /// .bucket("simple") /// .exec(|_, msg, _| { msg.channel_id.say("pong!")?; Ok(()) }))); /// ``` - pub fn simple_bucket(mut self, s: &str, delay: i64) -> Self { + pub fn simple_bucket(mut self, s: &str, delay: i64) -> Self { self.buckets.insert( s.to_string(), Bucket { @@ -631,31 +631,21 @@ impl StandardFramework { /// }); /// # } /// ``` - pub fn on(mut self, name: &str, + pub fn on(self, name: &str, f: fn(&mut Context, &Message, Args) -> Result<(), CommandError>) -> Self { - { - let ungrouped = self.groups - .entry("Ungrouped".to_string()) - .or_insert_with(|| Arc::new(CommandGroup::default())); - - if let Some(ref mut group) = Arc::get_mut(ungrouped) { - group - .commands - .insert(name.to_string(), CommandOrAlias::Command(Arc::new(A(f)))); - } - } - - self.initialized = true; - - self + self._cmd(name, A(f)) } /// Same as [`on`], but accepts a [`Command`] directly. /// /// [`on`]: #method.on /// [`Command`]: trait.Command.html - pub fn cmd(mut self, name: &str, c: C) -> Self { + pub fn cmd(self, name: &str, c: C) -> Self { + self._cmd(name, c) + } + + fn _cmd(mut self, name: &str, c: C) -> Self { { let ungrouped = self.groups .entry("Ungrouped".to_string()) @@ -684,7 +674,7 @@ impl StandardFramework { /// let _ = ctx.say("pong"); /// })); /// ``` - pub fn command(mut self, command_name: &str, f: F) -> Self + pub fn command(mut self, command_name: &str, f: F) -> Self where F: FnOnce(CreateCommand) -> CreateCommand { { let ungrouped = self.groups @@ -750,8 +740,8 @@ impl StandardFramework { /// .on("ping", |_, msg, _| { msg.channel_id.say("pong!")?; Ok(()) }) /// .on("pong", |_, msg, _| { msg.channel_id.say("ping!")?; Ok(()) }))); /// ``` - pub fn group(mut self, group_name: S, f: F) -> Self - where F: FnOnce(CreateGroup) -> CreateGroup, S: Into { + pub fn group(mut self, group_name: &str, f: F) -> Self + where F: FnOnce(CreateGroup) -> CreateGroup { let group = f(CreateGroup(CommandGroup::default())).0; self.groups.insert(group_name.into(), Arc::new(group)); -- cgit v1.2.3