diff options
| author | Zeyla Hellyer <[email protected]> | 2017-12-16 13:24:09 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-12-16 13:24:09 -0800 |
| commit | 9b53582f5e5e9650abda4106124e7f9f4e78a90c (patch) | |
| tree | 88bd56a75b1d110ea049abbaea88bb6e8a83dac3 /src | |
| parent | Fix compilation of examples (diff) | |
| download | serenity-9b53582f5e5e9650abda4106124e7f9f4e78a90c.tar.xz serenity-9b53582f5e5e9650abda4106124e7f9f4e78a90c.zip | |
Fix most clippy lints, take more refeernces
Fix clippy lints and subsequently accept references for more function
parameters.
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/bridge/gateway/shard_manager.rs | 20 | ||||
| -rw-r--r-- | src/client/bridge/gateway/shard_runner.rs | 6 | ||||
| -rw-r--r-- | src/client/dispatch.rs | 89 | ||||
| -rw-r--r-- | src/client/mod.rs | 10 | ||||
| -rw-r--r-- | src/framework/standard/args.rs | 21 | ||||
| -rw-r--r-- | src/framework/standard/command.rs | 8 | ||||
| -rw-r--r-- | src/framework/standard/create_help_command.rs | 3 | ||||
| -rw-r--r-- | src/framework/standard/help_commands.rs | 33 | ||||
| -rw-r--r-- | src/framework/standard/mod.rs | 4 | ||||
| -rw-r--r-- | src/http/mod.rs | 2 | ||||
| -rw-r--r-- | src/model/guild/guild_id.rs | 3 | ||||
| -rw-r--r-- | src/model/guild/member.rs | 4 | ||||
| -rw-r--r-- | src/model/guild/mod.rs | 8 | ||||
| -rw-r--r-- | src/model/guild/partial_guild.rs | 2 | ||||
| -rw-r--r-- | src/utils/message_builder.rs | 4 | ||||
| -rw-r--r-- | src/utils/mod.rs | 8 |
16 files changed, 117 insertions, 108 deletions
diff --git a/src/client/bridge/gateway/shard_manager.rs b/src/client/bridge/gateway/shard_manager.rs index 99cdec7..56bda7a 100644 --- a/src/client/bridge/gateway/shard_manager.rs +++ b/src/client/bridge/gateway/shard_manager.rs @@ -117,11 +117,11 @@ impl ShardManager { shard_index: u64, shard_init: u64, shard_total: u64, - ws_url: Arc<Mutex<String>>, - token: Arc<Mutex<String>>, - data: Arc<Mutex<ShareMap>>, - event_handler: Arc<H>, - framework: Arc<Mutex<Option<Box<Framework + Send>>>>, + ws_url: &Arc<Mutex<String>>, + token: &Arc<Mutex<String>>, + data: &Arc<Mutex<ShareMap>>, + event_handler: &Arc<H>, + framework: &Arc<Mutex<Option<Box<Framework + Send>>>>, threadpool: ThreadPool, ) -> (Arc<Mutex<Self>>, ShardManagerMonitor) where H: EventHandler + Send + Sync + 'static { let (thread_tx, thread_rx) = mpsc::channel(); @@ -130,16 +130,16 @@ impl ShardManager { let runners = Arc::new(Mutex::new(HashMap::new())); let mut shard_queuer = ShardQueuer { - data: Arc::clone(&data), - event_handler: Arc::clone(&event_handler), - framework: Arc::clone(&framework), + data: Arc::clone(data), + event_handler: Arc::clone(event_handler), + framework: Arc::clone(framework), last_start: None, manager_tx: thread_tx.clone(), queue: VecDeque::new(), runners: Arc::clone(&runners), rx: shard_queue_rx, - token: Arc::clone(&token), - ws_url: Arc::clone(&ws_url), + token: Arc::clone(token), + ws_url: Arc::clone(ws_url), threadpool, }; diff --git a/src/client/bridge/gateway/shard_runner.rs b/src/client/bridge/gateway/shard_runner.rs index 6ca73eb..a682693 100644 --- a/src/client/bridge/gateway/shard_runner.rs +++ b/src/client/bridge/gateway/shard_runner.rs @@ -143,7 +143,7 @@ impl<H: EventHandler + Send + Sync + 'static> ShardRunner<H> { let (event, action, successful) = self.recv_event(); - if let Some(action) = action { + if let Some(ref action) = action { let _ = self.action(action); } @@ -171,8 +171,8 @@ impl<H: EventHandler + Send + Sync + 'static> ShardRunner<H> { /// # Errors /// /// Returns - fn action(&mut self, action: ShardAction) -> Result<()> { - match action { + fn action(&mut self, action: &ShardAction) -> Result<()> { + match *action { ShardAction::Autoreconnect => self.shard.autoreconnect(), ShardAction::Heartbeat => self.shard.heartbeat(), ShardAction::Identify => self.shard.identify(), diff --git a/src/client/dispatch.rs b/src/client/dispatch.rs index ce1af3d..01e7c4b 100644 --- a/src/client/dispatch.rs +++ b/src/client/dispatch.rs @@ -42,10 +42,11 @@ fn context( runner_tx: &Sender<ShardClientMessage>, shard_id: u64, ) -> Context { - Context::new(Arc::clone(&data), runner_tx.clone(), shard_id) + Context::new(Arc::clone(data), runner_tx.clone(), shard_id) } #[cfg(feature = "framework")] +#[cfg_attr(feature = "cargo-clippy", allow(too_many_arguments))] pub fn dispatch<H: EventHandler + Send + Sync + 'static>( event: Event, framework: &Arc<Mutex<Option<Box<Framework + Send>>>>, @@ -117,7 +118,7 @@ fn dispatch_message<H>( message.transform_content(); } - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.message(context, message); @@ -158,7 +159,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( // So in short, only exists to reduce unnecessary clutter. match event.channel { Channel::Private(channel) => { - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.private_channel_create(context, channel); @@ -166,14 +167,14 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Channel::Group(_) => {}, Channel::Guild(channel) => { - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.channel_create(context, channel); }); }, Channel::Category(channel) => { - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.category_create(context, channel); @@ -189,14 +190,14 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( match event.channel { Channel::Private(_) | Channel::Group(_) => {}, Channel::Guild(channel) => { - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.channel_delete(context, channel); }); }, Channel::Category(channel) => { - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.category_delete(context, channel); @@ -206,7 +207,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::ChannelPinsUpdate(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.channel_pins_update(context, event); @@ -217,7 +218,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.channel_recipient_addition( @@ -231,7 +232,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.channel_recipient_removal( @@ -245,7 +246,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -259,7 +260,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::GuildBanAdd(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.guild_ban_addition(context, event.guild_id, event.user); @@ -267,7 +268,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::GuildBanRemove(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.guild_ban_removal(context, event.guild_id, event.user); @@ -297,7 +298,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( .iter() .map(|(&id, _)| id) .collect::<Vec<GuildId>>(); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.cached(context, guild_amount); @@ -306,7 +307,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( } let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -319,7 +320,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( Event::GuildDelete(mut event) => { let _full = update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -333,7 +334,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.guild_emojis_update(context, event.guild_id, event.emojis); @@ -341,7 +342,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::GuildIntegrationsUpdate(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.guild_integrations_update(context, event.guild_id); @@ -351,7 +352,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.guild_member_addition(context, event.guild_id, event.member); @@ -360,7 +361,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( Event::GuildMemberRemove(mut event) => { let _member = update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -373,7 +374,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( Event::GuildMemberUpdate(mut event) => { let _before = update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -395,7 +396,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.guild_members_chunk(context, event.guild_id, event.members); @@ -405,7 +406,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.guild_role_create(context, event.guild_id, event.role); @@ -414,7 +415,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( Event::GuildRoleDelete(mut event) => { let _role = update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -427,7 +428,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( Event::GuildRoleUpdate(mut event) => { let _before = update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -441,7 +442,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.guild_unavailable(context, event.guild_id); @@ -451,7 +452,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -470,7 +471,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( Event::MessageCreate(_) => {}, Event::MessageDeleteBulk(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.message_delete_bulk(context, event.channel_id, event.ids); @@ -478,7 +479,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::MessageDelete(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.message_delete(context, event.channel_id, event.message_id); @@ -486,7 +487,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::MessageUpdate(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.message_update(context, event); @@ -496,7 +497,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.presence_replace(context, event.presences); @@ -506,7 +507,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.presence_update(context, event); @@ -514,7 +515,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::ReactionAdd(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.reaction_add(context, event.reaction); @@ -522,7 +523,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::ReactionRemove(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.reaction_remove(context, event.reaction); @@ -530,7 +531,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::ReactionRemoveAll(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.reaction_remove_all(context, event.channel_id, event.message_id); @@ -539,14 +540,14 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( Event::Ready(mut event) => { update!(event); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); feature_cache! {{ last_guild_create_time = now!(); let _ = wait_for_guilds() .map(move |_| { - let context = context(data, &runner_tx, shard_id); + let context = context(data, runner_tx, shard_id); let event_handler = Arc::clone(&event_handler); threadpool.execute(move || { @@ -555,7 +556,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }); } else { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.ready(context, event.ready); @@ -569,7 +570,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::TypingStart(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.typing_start(context, event); @@ -577,7 +578,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::Unknown(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.unknown(context, event.kind, event.value); @@ -586,7 +587,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( Event::UserUpdate(mut event) => { let _before = update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { feature_cache! {{ @@ -598,7 +599,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::VoiceServerUpdate(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.voice_server_update(context, event); @@ -608,7 +609,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( update!(event); let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.voice_state_update(context, event.guild_id, event.voice_state); @@ -616,7 +617,7 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }, Event::WebhookUpdate(mut event) => { let context = context(data, runner_tx, shard_id); - let event_handler = Arc::clone(&event_handler); + let event_handler = Arc::clone(event_handler); threadpool.execute(move || { event_handler.webhook_update(context, event.guild_id, event.channel_id); diff --git a/src/client/mod.rs b/src/client/mod.rs index 8babece..57fa90e 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -341,11 +341,11 @@ impl Client { 0, 0, 0, - Arc::clone(&url), - Arc::clone(&locked), - Arc::clone(&data), - Arc::clone(&event_handler), - Arc::clone(&framework), + &url, + &locked, + &data, + &event_handler, + &framework, threadpool.clone(), ); diff --git a/src/framework/standard/args.rs b/src/framework/standard/args.rs index e9c6365..f18b012 100644 --- a/src/framework/standard/args.rs +++ b/src/framework/standard/args.rs @@ -55,7 +55,7 @@ fn second_quote_occurence(s: &str) -> Option<usize> { s.chars().enumerate().filter(|&(_, c)| c == '"').nth(1).map(|(pos, _)| pos) } -fn parse_quotes<T: FromStr>(s: &mut String, delimiter: &str) -> Result<T, T::Err> +fn parse_quotes<T: FromStr>(s: &mut String, delimiter: &str) -> Result<T, T::Err> where T::Err: StdError { // Fall back to `parse` if there're no quotes at the start. @@ -63,28 +63,28 @@ fn parse_quotes<T: FromStr>(s: &mut String, delimiter: &str) -> Result<T, T::Err return parse::<T>(s, delimiter); } - let mut pos = second_quote_occurence(&s).unwrap_or(s.len()); + let mut pos = second_quote_occurence(s).unwrap_or_else(|| s.len()); let res = (&s[1..pos]).parse::<T>().map_err(Error::Parse); // +1 is for the quote if pos < s.len() { pos += 1; } - + s.drain(..pos); res } -fn parse<T: FromStr>(s: &mut String, delimiter: &str) -> Result<T, T::Err> +fn parse<T: FromStr>(s: &mut String, delimiter: &str) -> Result<T, T::Err> where T::Err: StdError { - let mut pos = s.find(delimiter).unwrap_or(s.len()); + let mut pos = s.find(delimiter).unwrap_or_else(|| s.len()); let res = (&s[..pos]).parse::<T>().map_err(Error::Parse); // +1 is for the delimiter if pos < s.len() { pos += 1; } - + s.drain(..pos); res } @@ -100,7 +100,7 @@ pub struct Args { } impl Args { - pub fn new(message: &str, possible_delimiters: Vec<String>) -> Self { + pub fn new(message: &str, possible_delimiters: &[String]) -> Self { let delimiter = possible_delimiters .iter() .find(|&d| message.contains(d)) @@ -145,7 +145,10 @@ impl Args { return Err(Error::Eos); } - let pos = self.message.find(&self.delimiter).unwrap_or(self.message.len()); + let pos = self + .message + .find(&self.delimiter) + .unwrap_or_else(|| self.message.len()); fn parse_then_remove(msg: &mut String, pos: usize) -> &str { struct ParseThenRemove<'a>(&'a mut String, usize); @@ -355,7 +358,7 @@ impl Args { } // TODO: Make this efficient - + let pos = self.message .split(&self.delimiter) .position(|e| e.parse::<T>().is_ok()); diff --git a/src/framework/standard/command.rs b/src/framework/standard/command.rs index be0196c..5138596 100644 --- a/src/framework/standard/command.rs +++ b/src/framework/standard/command.rs @@ -13,7 +13,7 @@ pub type Check = Fn(&mut Context, &Message, &mut Args, &CommandOptions) -> bool + Sync + 'static; -pub type HelpFunction = fn(&mut Context, &Message, &HelpOptions, HashMap<String, Arc<CommandGroup>>, Args) +pub type HelpFunction = fn(&mut Context, &Message, &HelpOptions, HashMap<String, Arc<CommandGroup>>, &Args) -> Result<(), Error>; pub struct Help(pub HelpFunction, pub Arc<HelpOptions>); @@ -25,7 +25,7 @@ impl Debug for Help { } impl HelpCommand for Help { - fn execute(&self, c: &mut Context, m: &Message, ho: &HelpOptions,hm: HashMap<String, Arc<CommandGroup>>, a: Args) -> Result<(), Error> { + fn execute(&self, c: &mut Context, m: &Message, ho: &HelpOptions,hm: HashMap<String, Arc<CommandGroup>>, a: &Args) -> Result<(), Error> { (self.0)(c, m, ho, hm, a) } } @@ -176,7 +176,7 @@ pub struct HelpOptions { } pub trait HelpCommand: Send + Sync + 'static { - fn execute(&self, &mut Context, &Message, &HelpOptions, HashMap<String, Arc<CommandGroup>>, Args) -> Result<(), Error>; + fn execute(&self, &mut Context, &Message, &HelpOptions, HashMap<String, Arc<CommandGroup>>, &Args) -> Result<(), Error>; fn options(&self) -> Arc<CommandOptions> { Arc::clone(&DEFAULT_OPTIONS) @@ -184,7 +184,7 @@ pub trait HelpCommand: Send + Sync + 'static { } impl HelpCommand for Arc<HelpCommand> { - fn execute(&self, c: &mut Context, m: &Message, ho: &HelpOptions, hm: HashMap<String, Arc<CommandGroup>>, a: Args) -> Result<(), Error> { + fn execute(&self, c: &mut Context, m: &Message, ho: &HelpOptions, hm: HashMap<String, Arc<CommandGroup>>, a: &Args) -> Result<(), Error> { (**self).execute(c, m, ho, hm, a) } } diff --git a/src/framework/standard/create_help_command.rs b/src/framework/standard/create_help_command.rs index a8e8704..7e4c338 100644 --- a/src/framework/standard/create_help_command.rs +++ b/src/framework/standard/create_help_command.rs @@ -173,6 +173,7 @@ impl CreateHelpCommand { /// Finishes the creation of a help-command, returning `Help`. /// If `Some(String)` was set as `striked_commands_tip` and the `String` is empty, /// the creator will substitute content based on the `HelpBehaviour`-settings. + #[cfg_attr(feature = "cargo-clippy", allow(useless_if_let_seq))] pub(crate) fn finish(self) -> Arc<Help> { if self.0.striked_commands_tip == Some(String::new()) { let mut strike_text = String::from("~~`Striked commands`~~ are unavailable because they"); @@ -210,4 +211,4 @@ impl CreateHelpCommand { Arc::new(Help(function, Arc::new(options))) } -}
\ No newline at end of file +} diff --git a/src/framework/standard/help_commands.rs b/src/framework/standard/help_commands.rs index 85debc4..c660209 100644 --- a/src/framework/standard/help_commands.rs +++ b/src/framework/standard/help_commands.rs @@ -28,6 +28,7 @@ use framework::standard::{has_correct_roles, has_correct_permissions}; use model::channel::Message; use model::id::ChannelId; use std::collections::HashMap; +use std::hash::BuildHasher; use std::sync::Arc; use std::fmt::Write; use super::command::{InternalCommand}; @@ -91,12 +92,13 @@ pub fn has_all_requirements(cmd: &Arc<CommandOptions>, msg: &Message) -> bool { /// client.with_framework(StandardFramework::new() /// .help(help_commands::with_embeds)); /// ``` -pub fn with_embeds(_: &mut Context, - msg: &Message, - help_options: &HelpOptions, - groups: HashMap<String, Arc<CommandGroup>>, - args: Args) - -> Result<(), CommandError> { +pub fn with_embeds<H: BuildHasher>( + _: &mut Context, + msg: &Message, + help_options: &HelpOptions, + groups: HashMap<String, Arc<CommandGroup>, H>, + args: &Args +) -> Result<(), CommandError> { if !args.is_empty() { let name = args.full(); @@ -151,7 +153,7 @@ pub fn with_embeds(_: &mut Context, let _ = msg.channel_id.send_message(|m| { m.embed(|e| { - let mut embed = e.colour(help_options.embed_success_colour.clone()).title(command_name.clone()); + let mut embed = e.colour(help_options.embed_success_colour).title(command_name.clone()); if let Some(ref desc) = command.desc { embed = embed.description(desc); @@ -197,7 +199,7 @@ pub fn with_embeds(_: &mut Context, } } - let error_msg = help_options.command_not_found_text.replace("{}", &name); + let error_msg = help_options.command_not_found_text.replace("{}", name); error_embed(&msg.channel_id, &error_msg, help_options.embed_error_colour); return Ok(()); @@ -304,12 +306,13 @@ pub fn with_embeds(_: &mut Context, /// client.with_framework(StandardFramework::new() /// .help(help_commands::plain)); /// ``` -pub fn plain(_: &mut Context, - msg: &Message, - help_options: &HelpOptions, - groups: HashMap<String, Arc<CommandGroup>>, - args: Args) - -> Result<(), CommandError> { +pub fn plain<H: BuildHasher>( + _: &mut Context, + msg: &Message, + help_options: &HelpOptions, + groups: HashMap<String, Arc<CommandGroup>, H>, + args: &Args +) -> Result<(), CommandError> { if !args.is_empty() { let name = args.full(); @@ -406,7 +409,7 @@ pub fn plain(_: &mut Context, } let _ = msg.channel_id - .say(&help_options.suggestion_text.replace("{}", &name)); + .say(&help_options.suggestion_text.replace("{}", name)); return Ok(()); } diff --git a/src/framework/standard/mod.rs b/src/framework/standard/mod.rs index 576f820..02de3c0 100644 --- a/src/framework/standard/mod.rs +++ b/src/framework/standard/mod.rs @@ -973,7 +973,7 @@ impl Framework for StandardFramework { let mut content = message.content[position..].trim(); content = content[command_length..].trim(); - Args::new(&content, self.configuration.delimiters.clone()) + Args::new(content, &self.configuration.delimiters) }; let before = self.before.clone(); @@ -994,7 +994,7 @@ impl Framework for StandardFramework { } } - let result = (help.0)(&mut context, &message, &help.1, groups, args); + let result = (help.0)(&mut context, &message, &help.1, groups, &args); if let Some(after) = after { (after)(&mut context, &message, &built, result); diff --git a/src/http/mod.rs b/src/http/mod.rs index 5288f5c..f7d4335 100644 --- a/src/http/mod.rs +++ b/src/http/mod.rs @@ -1674,7 +1674,7 @@ pub fn send_files<'a, T, It: IntoIterator<Item=T>>(channel_id: u64, files: It, m let mut request = Multipart::from_request(request)?; let mut file_num = "0".to_string(); - for file in files.into_iter() { + for file in files { match file.into() { AttachmentType::Bytes((mut bytes, filename)) => { request diff --git a/src/model/guild/guild_id.rs b/src/model/guild/guild_id.rs index ad5866d..2453fc6 100644 --- a/src/model/guild/guild_id.rs +++ b/src/model/guild/guild_id.rs @@ -48,7 +48,8 @@ impl GuildId { /// [`Guild::ban`]: struct.Guild.html#method.ban /// [`User`]: struct.User.html /// [Ban Members]: permissions/constant.BAN_MEMBERS.html - pub fn ban<U: Into<UserId>, BO: BanOptions>(&self, user: U, ban_options: BO) -> Result<()> { + pub fn ban<U, BO>(&self, user: U, ban_options: &BO) -> Result<()> + where U: Into<UserId>, BO: BanOptions { let dmd = ban_options.dmd(); if dmd > 7 { return Err(Error::Model(ModelError::DeleteMessageDaysAmount(dmd))); diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs index 0e8c4f6..166eb55 100644 --- a/src/model/guild/member.rs +++ b/src/model/guild/member.rs @@ -135,7 +135,7 @@ impl Member { /// /// [Ban Members]: permissions/constant.BAN_MEMBERS.html #[cfg(feature = "cache")] - pub fn ban<BO: BanOptions>(&self, ban_options: BO) -> Result<()> { + pub fn ban<BO: BanOptions>(&self, ban_options: &BO) -> Result<()> { let dmd = ban_options.dmd(); if dmd > 7 { return Err(Error::Model(ModelError::DeleteMessageDaysAmount(dmd))); @@ -189,7 +189,7 @@ impl Member { for (cid, channel) in &reader.channels { if reader.permissions_in(*cid, self.user.read().id).read_messages() { - return Some(channel.clone()); + return Some(Arc::clone(channel)); } } diff --git a/src/model/guild/mod.rs b/src/model/guild/mod.rs index d6a2c50..1011891 100644 --- a/src/model/guild/mod.rs +++ b/src/model/guild/mod.rs @@ -144,7 +144,7 @@ impl Guild { pub fn default_channel(&self, uid: UserId) -> Option<Arc<RwLock<GuildChannel>>> { for (cid, channel) in &self.channels { if self.permissions_in(*cid, uid).read_messages() { - return Some(Arc::clone(&channel)); + return Some(Arc::clone(channel)); } } @@ -160,7 +160,7 @@ impl Guild { for (cid, channel) in &self.channels { for memid in self.members.keys() { if self.permissions_in(*cid, *memid).read_messages() { - return Some(Arc::clone(&channel)); + return Some(Arc::clone(channel)); } } } @@ -208,7 +208,7 @@ impl Guild { /// [`Guild::ban`]: struct.Guild.html#method.ban /// [`User`]: struct.User.html /// [Ban Members]: permissions/constant.BAN_MEMBERS.html - pub fn ban<U: Into<UserId>, BO: BanOptions>(&self, user: U, options: BO) -> Result<()> { + pub fn ban<U: Into<UserId>, BO: BanOptions>(&self, user: U, options: &BO) -> Result<()> { #[cfg(feature = "cache")] { let req = Permissions::BAN_MEMBERS; @@ -1039,7 +1039,7 @@ impl Guild { let mut permissions = everyone.permissions; for role in &member.roles { - if let Some(role) = self.roles.get(&role) { + if let Some(role) = self.roles.get(role) { if role.permissions.contains(Permissions::ADMINISTRATOR) { return Permissions::all(); } diff --git a/src/model/guild/partial_guild.rs b/src/model/guild/partial_guild.rs index d5312b5..cd51a98 100644 --- a/src/model/guild/partial_guild.rs +++ b/src/model/guild/partial_guild.rs @@ -66,7 +66,7 @@ impl PartialGuild { )); } - self.id.ban(user, delete_message_days) + self.id.ban(user, &delete_message_days) } /// Gets a list of the guild's bans. diff --git a/src/utils/message_builder.rs b/src/utils/message_builder.rs index f94b3fd..b3599c2 100644 --- a/src/utils/message_builder.rs +++ b/src/utils/message_builder.rs @@ -162,7 +162,7 @@ impl MessageBuilder { /// ``` /// /// [Display implementation]: ../model/struct.Emoji.html#method.fmt - pub fn emoji(mut self, emoji: Emoji) -> Self { + pub fn emoji(mut self, emoji: &Emoji) -> Self { let _ = write!(self.0, "{}", emoji); self @@ -171,7 +171,7 @@ impl MessageBuilder { /// Mentions something that implements the [`Mentionable`] trait. /// /// [`Mentionable`]: ../model/trait.Mentionable.html - pub fn mention<M: Mentionable>(mut self, item: M) -> Self { + pub fn mention<M: Mentionable>(mut self, item: &M) -> Self { let _ = write!(self.0, "{}", item.mention()); self diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 2660798..907d3a3 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -18,7 +18,7 @@ use model::misc::EmojiIdentifier; use std::collections::HashMap; use std::ffi::OsStr; use std::fs::File; -use std::hash::Hash; +use std::hash::{BuildHasher, Hash}; use std::io::Read; use std::path::Path; @@ -28,11 +28,11 @@ use cache::Cache; use CACHE; /// Converts a HashMap into a final `serde_json::Map` representation. -pub fn hashmap_to_json_map<T>(map: HashMap<T, Value>) -> Map<String, Value> - where T: Eq + Hash + ToString { +pub fn hashmap_to_json_map<H, T>(map: HashMap<T, Value, H>) + -> Map<String, Value> where H: BuildHasher, T: Eq + Hash + ToString { let mut json_map = Map::new(); - for (key, value) in map.into_iter() { + for (key, value) in map { json_map.insert(key.to_string(), value); } |