[INFO] crate dementia 0.0.4 is already in cache [INFO] extracting crate dementia 0.0.4 into work/ex/clippy-test-run/sources/stable/reg/dementia/0.0.4 [INFO] extracting crate dementia 0.0.4 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dementia/0.0.4 [INFO] validating manifest of dementia-0.0.4 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 dementia-0.0.4 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 dementia-0.0.4 [INFO] finished frobbing dementia-0.0.4 [INFO] frobbed toml for dementia-0.0.4 written to work/ex/clippy-test-run/sources/stable/reg/dementia/0.0.4/Cargo.toml [INFO] started frobbing dementia-0.0.4 [INFO] finished frobbing dementia-0.0.4 [INFO] frobbed toml for dementia-0.0.4 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dementia/0.0.4/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 dementia-0.0.4 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/dementia/0.0.4:/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] c807201abe672242866112ad06cb362fdb9db9f49e0f259b5062187ad1cbd732 [INFO] running `"docker" "start" "-a" "c807201abe672242866112ad06cb362fdb9db9f49e0f259b5062187ad1cbd732"` [INFO] [stderr] Checking dementia v0.0.4 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:278:9 [INFO] [stderr] | [INFO] [stderr] 278 | return self.info.access_token.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.info.access_token.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:278:9 [INFO] [stderr] | [INFO] [stderr] 278 | return self.info.access_token.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.info.access_token.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | / match v["flows"].as_array() { [INFO] [stderr] 173 | | Some(flowlist) => for flow in flowlist { [INFO] [stderr] 174 | | match flow["type"].as_str() { [INFO] [stderr] 175 | | Some("m.login.password") => { [INFO] [stderr] ... | [INFO] [stderr] 182 | | _ => (), [INFO] [stderr] 183 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 172 | if let Some(flowlist) = v["flows"].as_array() for flow in flowlist { [INFO] [stderr] 173 | match flow["type"].as_str() { [INFO] [stderr] 174 | Some("m.login.password") => { [INFO] [stderr] 175 | println!("Found login option `m.login.password`"); [INFO] [stderr] 176 | pwlogin = true; [INFO] [stderr] 177 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:174:21 [INFO] [stderr] | [INFO] [stderr] 174 | / match flow["type"].as_str() { [INFO] [stderr] 175 | | Some("m.login.password") => { [INFO] [stderr] 176 | | println!("Found login option `m.login.password`"); [INFO] [stderr] 177 | | pwlogin = true; [INFO] [stderr] 178 | | } [INFO] [stderr] 179 | | _ => (), [INFO] [stderr] 180 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 174 | if let Some("m.login.password") = flow["type"].as_str() { [INFO] [stderr] 175 | println!("Found login option `m.login.password`"); [INFO] [stderr] 176 | pwlogin = true; [INFO] [stderr] 177 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/lib.rs:233:5 [INFO] [stderr] | [INFO] [stderr] 233 | / pub fn new(server_url: &str) -> HomeserverBuilder<(), (), ()> { [INFO] [stderr] 234 | | HomeserverBuilder { [INFO] [stderr] 235 | | server: server_url.to_owned(), [INFO] [stderr] 236 | | username: (), [INFO] [stderr] ... | [INFO] [stderr] 239 | | } [INFO] [stderr] 240 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:368:17 [INFO] [stderr] | [INFO] [stderr] 368 | / match v["rooms"]["invite"].as_object() { [INFO] [stderr] 369 | | Some(invitelist) => for (room, info) in invitelist { [INFO] [stderr] 370 | | for event in info["invite_state"]["events"].as_array().unwrap() { [INFO] [stderr] 371 | | if event["membership"].as_str() == Some("invite") { [INFO] [stderr] ... | [INFO] [stderr] 376 | | _ => (), [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 368 | if let Some(invitelist) = v["rooms"]["invite"].as_object() for (room, info) in invitelist { [INFO] [stderr] 369 | for event in info["invite_state"]["events"].as_array().unwrap() { [INFO] [stderr] 370 | if event["membership"].as_str() == Some("invite") { [INFO] [stderr] 371 | vec.push(room.to_owned()); [INFO] [stderr] 372 | } [INFO] [stderr] 373 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:427:17 [INFO] [stderr] | [INFO] [stderr] 427 | / match v["rooms"]["join"][&self.id]["timeline"]["events"].as_array() { [INFO] [stderr] 428 | | Some(eventlist) => for event in eventlist { [INFO] [stderr] 429 | | match event["content"]["msgtype"].as_str() { [INFO] [stderr] 430 | | Some("m.text") => vec.push(RoomEvent::Message(Message::Text( [INFO] [stderr] ... | [INFO] [stderr] 462 | | _ => (), [INFO] [stderr] 463 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 427 | if let Some(eventlist) = v["rooms"]["join"][&self.id]["timeline"]["events"].as_array() for event in eventlist { [INFO] [stderr] 428 | match event["content"]["msgtype"].as_str() { [INFO] [stderr] 429 | Some("m.text") => vec.push(RoomEvent::Message(Message::Text( [INFO] [stderr] 430 | event["content"]["body"].as_str().unwrap().to_owned(), [INFO] [stderr] 431 | ))), [INFO] [stderr] 432 | Some("m.emote") => vec.push(RoomEvent::Message(Message::Emote( [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | / match v["flows"].as_array() { [INFO] [stderr] 173 | | Some(flowlist) => for flow in flowlist { [INFO] [stderr] 174 | | match flow["type"].as_str() { [INFO] [stderr] 175 | | Some("m.login.password") => { [INFO] [stderr] ... | [INFO] [stderr] 182 | | _ => (), [INFO] [stderr] 183 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 172 | if let Some(flowlist) = v["flows"].as_array() for flow in flowlist { [INFO] [stderr] 173 | match flow["type"].as_str() { [INFO] [stderr] 174 | Some("m.login.password") => { [INFO] [stderr] 175 | println!("Found login option `m.login.password`"); [INFO] [stderr] 176 | pwlogin = true; [INFO] [stderr] 177 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:174:21 [INFO] [stderr] | [INFO] [stderr] 174 | / match flow["type"].as_str() { [INFO] [stderr] 175 | | Some("m.login.password") => { [INFO] [stderr] 176 | | println!("Found login option `m.login.password`"); [INFO] [stderr] 177 | | pwlogin = true; [INFO] [stderr] 178 | | } [INFO] [stderr] 179 | | _ => (), [INFO] [stderr] 180 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 174 | if let Some("m.login.password") = flow["type"].as_str() { [INFO] [stderr] 175 | println!("Found login option `m.login.password`"); [INFO] [stderr] 176 | pwlogin = true; [INFO] [stderr] 177 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/lib.rs:233:5 [INFO] [stderr] | [INFO] [stderr] 233 | / pub fn new(server_url: &str) -> HomeserverBuilder<(), (), ()> { [INFO] [stderr] 234 | | HomeserverBuilder { [INFO] [stderr] 235 | | server: server_url.to_owned(), [INFO] [stderr] 236 | | username: (), [INFO] [stderr] ... | [INFO] [stderr] 239 | | } [INFO] [stderr] 240 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:368:17 [INFO] [stderr] | [INFO] [stderr] 368 | / match v["rooms"]["invite"].as_object() { [INFO] [stderr] 369 | | Some(invitelist) => for (room, info) in invitelist { [INFO] [stderr] 370 | | for event in info["invite_state"]["events"].as_array().unwrap() { [INFO] [stderr] 371 | | if event["membership"].as_str() == Some("invite") { [INFO] [stderr] ... | [INFO] [stderr] 376 | | _ => (), [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 368 | if let Some(invitelist) = v["rooms"]["invite"].as_object() for (room, info) in invitelist { [INFO] [stderr] 369 | for event in info["invite_state"]["events"].as_array().unwrap() { [INFO] [stderr] 370 | if event["membership"].as_str() == Some("invite") { [INFO] [stderr] 371 | vec.push(room.to_owned()); [INFO] [stderr] 372 | } [INFO] [stderr] 373 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:427:17 [INFO] [stderr] | [INFO] [stderr] 427 | / match v["rooms"]["join"][&self.id]["timeline"]["events"].as_array() { [INFO] [stderr] 428 | | Some(eventlist) => for event in eventlist { [INFO] [stderr] 429 | | match event["content"]["msgtype"].as_str() { [INFO] [stderr] 430 | | Some("m.text") => vec.push(RoomEvent::Message(Message::Text( [INFO] [stderr] ... | [INFO] [stderr] 462 | | _ => (), [INFO] [stderr] 463 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 427 | if let Some(eventlist) = v["rooms"]["join"][&self.id]["timeline"]["events"].as_array() for event in eventlist { [INFO] [stderr] 428 | match event["content"]["msgtype"].as_str() { [INFO] [stderr] 429 | Some("m.text") => vec.push(RoomEvent::Message(Message::Text( [INFO] [stderr] 430 | event["content"]["body"].as_str().unwrap().to_owned(), [INFO] [stderr] 431 | ))), [INFO] [stderr] 432 | Some("m.emote") => vec.push(RoomEvent::Message(Message::Emote( [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> examples/authenticate_with_token.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | / match event { [INFO] [stderr] 37 | | RoomEvent::Message(Message::Text(text)) => { [INFO] [stderr] 38 | | println!("{}", text); [INFO] [stderr] 39 | | if text == "hi" { [INFO] [stderr] ... | [INFO] [stderr] 43 | | _ => (), [INFO] [stderr] 44 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 36 | if let RoomEvent::Message(Message::Text(text)) = event { [INFO] [stderr] 37 | println!("{}", text); [INFO] [stderr] 38 | if text == "hi" { [INFO] [stderr] 39 | room.send_notice("ahoi!".to_owned()); [INFO] [stderr] 40 | } [INFO] [stderr] 41 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> examples/login_with_password.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | / match event { [INFO] [stderr] 41 | | RoomEvent::Message(Message::Text(text)) => { [INFO] [stderr] 42 | | println!("{}", text); [INFO] [stderr] 43 | | if text == "hi" { [INFO] [stderr] ... | [INFO] [stderr] 47 | | _ => (), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 40 | if let RoomEvent::Message(Message::Text(text)) = event { [INFO] [stderr] 41 | println!("{}", text); [INFO] [stderr] 42 | if text == "hi" { [INFO] [stderr] 43 | room.send_notice("ahoi!".to_owned()); [INFO] [stderr] 44 | } [INFO] [stderr] 45 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 20.45s [INFO] running `"docker" "inspect" "c807201abe672242866112ad06cb362fdb9db9f49e0f259b5062187ad1cbd732"` [INFO] running `"docker" "rm" "-f" "c807201abe672242866112ad06cb362fdb9db9f49e0f259b5062187ad1cbd732"` [INFO] [stdout] c807201abe672242866112ad06cb362fdb9db9f49e0f259b5062187ad1cbd732