[INFO] crate teleborg 0.1.32 is already in cache [INFO] extracting crate teleborg 0.1.32 into work/ex/clippy-test-run/sources/stable/reg/teleborg/0.1.32 [INFO] extracting crate teleborg 0.1.32 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/teleborg/0.1.32 [INFO] validating manifest of teleborg-0.1.32 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of teleborg-0.1.32 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing teleborg-0.1.32 [INFO] finished frobbing teleborg-0.1.32 [INFO] frobbed toml for teleborg-0.1.32 written to work/ex/clippy-test-run/sources/stable/reg/teleborg/0.1.32/Cargo.toml [INFO] started frobbing teleborg-0.1.32 [INFO] finished frobbing teleborg-0.1.32 [INFO] frobbed toml for teleborg-0.1.32 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/teleborg/0.1.32/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting teleborg-0.1.32 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/teleborg/0.1.32:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 48807f857388fc1b38c15d754ee040e80d8c4b6c01551553ff09ebdd31faf03c [INFO] running `"docker" "start" "-a" "48807f857388fc1b38c15d754ee040e80d8c4b6c01551553ff09ebdd31faf03c"` [INFO] [stderr] Checking teleborg v0.1.32 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/updater.rs:32:37 [INFO] [stderr] | [INFO] [stderr] 32 | let mut updater = Updater { token: token }; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:44:16 [INFO] [stderr] | [INFO] [stderr] 44 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:45:16 [INFO] [stderr] | [INFO] [stderr] 45 | first_name: first_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `first_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:46:16 [INFO] [stderr] | [INFO] [stderr] 46 | last_name: last_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `last_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:47:16 [INFO] [stderr] | [INFO] [stderr] 47 | username: username, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `username` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:48:16 [INFO] [stderr] | [INFO] [stderr] 48 | client: client, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `client` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:49:16 [INFO] [stderr] | [INFO] [stderr] 49 | bot_url: bot_url, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `bot_url` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/objects/inline_keyboard.rs:22:32 [INFO] [stderr] | [INFO] [stderr] 22 | InlineKeyboardMarkup { inline_keyboard: inline_keyboard } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `inline_keyboard` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/objects/inline_keyboard.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | text: text, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `text` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/updater.rs:32:37 [INFO] [stderr] | [INFO] [stderr] 32 | let mut updater = Updater { token: token }; [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `token` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:44:16 [INFO] [stderr] | [INFO] [stderr] 44 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:45:16 [INFO] [stderr] | [INFO] [stderr] 45 | first_name: first_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `first_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:46:16 [INFO] [stderr] | [INFO] [stderr] 46 | last_name: last_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `last_name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:47:16 [INFO] [stderr] | [INFO] [stderr] 47 | username: username, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `username` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:48:16 [INFO] [stderr] | [INFO] [stderr] 48 | client: client, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `client` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/bot/mod.rs:49:16 [INFO] [stderr] | [INFO] [stderr] 49 | bot_url: bot_url, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `bot_url` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/objects/inline_keyboard.rs:22:32 [INFO] [stderr] | [INFO] [stderr] 22 | InlineKeyboardMarkup { inline_keyboard: inline_keyboard } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `inline_keyboard` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/objects/inline_keyboard.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | text: text, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `text` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/updater.rs:9:18 [INFO] [stderr] | [INFO] [stderr] 9 | const BASE_URL: &'static str = "https://api.telegram.org/bot"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/updater.rs:9:18 [INFO] [stderr] | [INFO] [stderr] 9 | const BASE_URL: &'static str = "https://api.telegram.org/bot"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `dispatcher::Dispatcher` [INFO] [stderr] --> src/dispatcher.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> Self { [INFO] [stderr] 20 | | Dispatcher { [INFO] [stderr] 21 | | command_handlers: HashMap::new(), [INFO] [stderr] 22 | | message_handlers: Vec::new(), [INFO] [stderr] 23 | | } [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/dispatcher.rs:43:34 [INFO] [stderr] | [INFO] [stderr] 43 | if t.starts_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/dispatcher.rs:46:58 [INFO] [stderr] | [INFO] [stderr] 46 | let name_command = bot_command.split("@").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bot/parse_mode.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / match parse_mode { [INFO] [stderr] 11 | | &ParseMode::Text => "None", [INFO] [stderr] 12 | | &ParseMode::Markdown => "Markdown", [INFO] [stderr] 13 | | &ParseMode::Html => "HTML", [INFO] [stderr] 14 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 10 | match *parse_mode { [INFO] [stderr] 11 | ParseMode::Text => "None", [INFO] [stderr] 12 | ParseMode::Markdown => "Markdown", [INFO] [stderr] 13 | ParseMode::Html => "HTML", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bot/chat_action.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / match chat_action { [INFO] [stderr] 15 | | &ChatAction::Typing => "typing", [INFO] [stderr] 16 | | &ChatAction::UploadPhoto => "upload_photo", [INFO] [stderr] 17 | | &ChatAction::RecordVideo => "record_video", [INFO] [stderr] ... | [INFO] [stderr] 21 | | &ChatAction::FindLocation => "find_location", [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 14 | match *chat_action { [INFO] [stderr] 15 | ChatAction::Typing => "typing", [INFO] [stderr] 16 | ChatAction::UploadPhoto => "upload_photo", [INFO] [stderr] 17 | ChatAction::RecordVideo => "record_video", [INFO] [stderr] 18 | ChatAction::UploadVideo => "upload_video", [INFO] [stderr] 19 | ChatAction::UploadAudio => "upload_audio", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/bot/mod.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | / pub fn send_message(&self, [INFO] [stderr] 99 | | chat_id: &i64, [INFO] [stderr] 100 | | text: &str, [INFO] [stderr] 101 | | parse_mode: Option<&ParseMode>, [INFO] [stderr] ... | [INFO] [stderr] 128 | | self.post_message(&path, ¶ms) [INFO] [stderr] 129 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bot/mod.rs:99:34 [INFO] [stderr] | [INFO] [stderr] 99 | chat_id: &i64, [INFO] [stderr] | ^^^^ help: consider passing by value instead: `i64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:114:47 [INFO] [stderr] | [INFO] [stderr] 114 | .unwrap_or("None".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "None".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:118:19 [INFO] [stderr] | [INFO] [stderr] 118 | .unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:117:52 [INFO] [stderr] | [INFO] [stderr] 117 | .map(|r| serde_json::to_string(r).unwrap_or("".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bot/mod.rs:142:37 [INFO] [stderr] | [INFO] [stderr] 142 | chat_id: &i32, [INFO] [stderr] | ^^^^ help: consider passing by value instead: `i32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bot/mod.rs:159:45 [INFO] [stderr] | [INFO] [stderr] 159 | pub fn send_chat_action(&self, chat_id: &i64, action: &ChatAction) -> Result { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `i64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bot/mod.rs:174:34 [INFO] [stderr] | [INFO] [stderr] 174 | chat_id: &i64, [INFO] [stderr] | ^^^^ help: consider passing by value instead: `i64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:187:47 [INFO] [stderr] | [INFO] [stderr] 187 | .unwrap_or("None".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "None".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:190:34 [INFO] [stderr] | [INFO] [stderr] 190 | .unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `dispatcher::Dispatcher` [INFO] [stderr] --> src/dispatcher.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> Self { [INFO] [stderr] 20 | | Dispatcher { [INFO] [stderr] 21 | | command_handlers: HashMap::new(), [INFO] [stderr] 22 | | message_handlers: Vec::new(), [INFO] [stderr] 23 | | } [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/dispatcher.rs:43:34 [INFO] [stderr] | [INFO] [stderr] 43 | if t.starts_with("/") { [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/dispatcher.rs:46:58 [INFO] [stderr] | [INFO] [stderr] 46 | let name_command = bot_command.split("@").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bot/parse_mode.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / match parse_mode { [INFO] [stderr] 11 | | &ParseMode::Text => "None", [INFO] [stderr] 12 | | &ParseMode::Markdown => "Markdown", [INFO] [stderr] 13 | | &ParseMode::Html => "HTML", [INFO] [stderr] 14 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 10 | match *parse_mode { [INFO] [stderr] 11 | ParseMode::Text => "None", [INFO] [stderr] 12 | ParseMode::Markdown => "Markdown", [INFO] [stderr] 13 | ParseMode::Html => "HTML", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/bot/chat_action.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / match chat_action { [INFO] [stderr] 15 | | &ChatAction::Typing => "typing", [INFO] [stderr] 16 | | &ChatAction::UploadPhoto => "upload_photo", [INFO] [stderr] 17 | | &ChatAction::RecordVideo => "record_video", [INFO] [stderr] ... | [INFO] [stderr] 21 | | &ChatAction::FindLocation => "find_location", [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 14 | match *chat_action { [INFO] [stderr] 15 | ChatAction::Typing => "typing", [INFO] [stderr] 16 | ChatAction::UploadPhoto => "upload_photo", [INFO] [stderr] 17 | ChatAction::RecordVideo => "record_video", [INFO] [stderr] 18 | ChatAction::UploadVideo => "upload_video", [INFO] [stderr] 19 | ChatAction::UploadAudio => "upload_audio", [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/bot/mod.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | / pub fn send_message(&self, [INFO] [stderr] 99 | | chat_id: &i64, [INFO] [stderr] 100 | | text: &str, [INFO] [stderr] 101 | | parse_mode: Option<&ParseMode>, [INFO] [stderr] ... | [INFO] [stderr] 128 | | self.post_message(&path, ¶ms) [INFO] [stderr] 129 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bot/mod.rs:99:34 [INFO] [stderr] | [INFO] [stderr] 99 | chat_id: &i64, [INFO] [stderr] | ^^^^ help: consider passing by value instead: `i64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:114:47 [INFO] [stderr] | [INFO] [stderr] 114 | .unwrap_or("None".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "None".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:118:19 [INFO] [stderr] | [INFO] [stderr] 118 | .unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:117:52 [INFO] [stderr] | [INFO] [stderr] 117 | .map(|r| serde_json::to_string(r).unwrap_or("".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bot/mod.rs:142:37 [INFO] [stderr] | [INFO] [stderr] 142 | chat_id: &i32, [INFO] [stderr] | ^^^^ help: consider passing by value instead: `i32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bot/mod.rs:159:45 [INFO] [stderr] | [INFO] [stderr] 159 | pub fn send_chat_action(&self, chat_id: &i64, action: &ChatAction) -> Result { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `i64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/bot/mod.rs:174:34 [INFO] [stderr] | [INFO] [stderr] 174 | chat_id: &i64, [INFO] [stderr] | ^^^^ help: consider passing by value instead: `i64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:187:47 [INFO] [stderr] | [INFO] [stderr] 187 | .unwrap_or("None".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "None".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/bot/mod.rs:190:34 [INFO] [stderr] | [INFO] [stderr] 190 | .unwrap_or("".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/objects/inline_keyboard.rs:36:27 [INFO] [stderr] | [INFO] [stderr] 36 | url: Some(url.unwrap_or("".to_string())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/objects/inline_keyboard.rs:37:47 [INFO] [stderr] | [INFO] [stderr] 37 | callback_data: Some(callback_data.unwrap_or("".to_string())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/objects/inline_keyboard.rs:38:59 [INFO] [stderr] | [INFO] [stderr] 38 | switch_inline_query: Some(switch_inline_query.unwrap_or("".to_string())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/objects/inline_keyboard.rs:40:57 [INFO] [stderr] | [INFO] [stderr] 40 | .unwrap_or("".to_string())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/objects/inline_keyboard.rs:36:27 [INFO] [stderr] | [INFO] [stderr] 36 | url: Some(url.unwrap_or("".to_string())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/objects/inline_keyboard.rs:37:47 [INFO] [stderr] | [INFO] [stderr] 37 | callback_data: Some(callback_data.unwrap_or("".to_string())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/objects/inline_keyboard.rs:38:59 [INFO] [stderr] | [INFO] [stderr] 38 | switch_inline_query: Some(switch_inline_query.unwrap_or("".to_string())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/objects/inline_keyboard.rs:40:57 [INFO] [stderr] | [INFO] [stderr] 40 | .unwrap_or("".to_string())), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: unused variable: `args` [INFO] [stderr] --> tests/test_updater.rs:14:40 [INFO] [stderr] | [INFO] [stderr] 14 | fn test(bot: &Bot, update: Update, args: Option>) { [INFO] [stderr] | ^^^^ help: consider using `_args` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_updater` [INFO] [stderr] --> tests/test_updater.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | fn test_updater() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test` [INFO] [stderr] --> tests/test_updater.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | fn test(bot: &Bot, update: Update, args: Option>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> tests/test_bot.rs:12:22 [INFO] [stderr] | [INFO] [stderr] 12 | const BASE_URL: &'static str = "https://api.telegram.org/bot"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> tests/test_bot.rs:15:21 [INFO] [stderr] | [INFO] [stderr] 15 | let token = env::var("TELEGRAM_BOT_TOKEN") [INFO] [stderr] | _____________________^ [INFO] [stderr] 16 | | .ok() [INFO] [stderr] 17 | | .expect("Can't find TELEGRAM_BOT_TOKEN env variable"); [INFO] [stderr] | |_________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> tests/test_bot.rs:18:23 [INFO] [stderr] | [INFO] [stderr] 18 | let chat_id = env::var("TELEGRAM_CHAT_ID") [INFO] [stderr] | _______________________^ [INFO] [stderr] 19 | | .ok() [INFO] [stderr] 20 | | .expect("Can't find TELEGRAM_CHAT_ID env variable") [INFO] [stderr] | |_______________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 11.19s [INFO] running `"docker" "inspect" "48807f857388fc1b38c15d754ee040e80d8c4b6c01551553ff09ebdd31faf03c"` [INFO] running `"docker" "rm" "-f" "48807f857388fc1b38c15d754ee040e80d8c4b6c01551553ff09ebdd31faf03c"` [INFO] [stdout] 48807f857388fc1b38c15d754ee040e80d8c4b6c01551553ff09ebdd31faf03c