[INFO] updating cached repository MonteyMontey/crypto-info [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/MonteyMontey/crypto-info [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/MonteyMontey/crypto-info" "work/ex/clippy-test-run/sources/stable/gh/MonteyMontey/crypto-info"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/MonteyMontey/crypto-info'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/MonteyMontey/crypto-info" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MonteyMontey/crypto-info"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MonteyMontey/crypto-info'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] f5a0915b8d28efb51fc0e772f381a8d89d000519 [INFO] sha for GitHub repo MonteyMontey/crypto-info: f5a0915b8d28efb51fc0e772f381a8d89d000519 [INFO] validating manifest of MonteyMontey/crypto-info 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 MonteyMontey/crypto-info 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 MonteyMontey/crypto-info [INFO] finished frobbing MonteyMontey/crypto-info [INFO] frobbed toml for MonteyMontey/crypto-info written to work/ex/clippy-test-run/sources/stable/gh/MonteyMontey/crypto-info/Cargo.toml [INFO] started frobbing MonteyMontey/crypto-info [INFO] finished frobbing MonteyMontey/crypto-info [INFO] frobbed toml for MonteyMontey/crypto-info written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MonteyMontey/crypto-info/Cargo.toml [INFO] crate MonteyMontey/crypto-info has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on the registry index [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting MonteyMontey/crypto-info against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/MonteyMontey/crypto-info:/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] 70b3a6335da43639670a14239dcaa05c82d8dc5d3559caa1ba398e3f19621e26 [INFO] running `"docker" "start" "-a" "70b3a6335da43639670a14239dcaa05c82d8dc5d3559caa1ba398e3f19621e26"` [INFO] [stderr] Checking minihttpse v0.1.6 [INFO] [stderr] Checking serde_json v1.0.15 [INFO] [stderr] Checking crypto-info v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | return n; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `n` [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/main.rs:61:14 [INFO] [stderr] | [INFO] [stderr] 61 | 1 => return "market_cap".to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"market_cap".to_string()` [INFO] [stderr] | [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/main.rs:62:14 [INFO] [stderr] | [INFO] [stderr] 62 | 2 => return "price".to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"price".to_string()` [INFO] [stderr] | [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/main.rs:63:14 [INFO] [stderr] | [INFO] [stderr] 63 | 3 => return "volume_24h".to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"volume_24h".to_string()` [INFO] [stderr] | [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/main.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | return json; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `json` [INFO] [stderr] | [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/main.rs:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | true => return false, [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [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/main.rs:80:18 [INFO] [stderr] | [INFO] [stderr] 80 | false => return true [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [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/main.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | return response; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `response` [INFO] [stderr] | [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/main.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | return tree; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `tree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:76:44 [INFO] [stderr] | [INFO] [stderr] 76 | fn check_if_key_in_json(json: &Value, key: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | let ref value: Value = json["data"][key]; [INFO] [stderr] | ----^^^^^^^^^---------------------------- help: try: `let value: &Value = &json["data"][key];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/main.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / match value.is_null() { [INFO] [stderr] 79 | | true => return false, [INFO] [stderr] 80 | | false => return true [INFO] [stderr] 81 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if value.is_null() { return false } else { return true }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:90:19 [INFO] [stderr] | [INFO] [stderr] 90 | let request = String::from(format!("GET /v2/ticker/ HTTP/1.1\r\nHost: api.coinmarketcap.com\r\nConnection: close\r\n\r\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("GET /v2/ticker/ HTTP/1.1\r\nHost: api.coinmarketcap.com\r\nConnection: close\r\n\r\n")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:90:32 [INFO] [stderr] | [INFO] [stderr] 90 | let request = String::from(format!("GET /v2/ticker/ HTTP/1.1\r\nHost: api.coinmarketcap.com\r\nConnection: close\r\n\r\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"GET /v2/ticker/ HTTP/1.1\r\nHost: api.coinmarketcap.com\r\nConnection: close\r\n\r\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | stream.write(request.as_bytes()).expect("could not send request"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:109:63 [INFO] [stderr] | [INFO] [stderr] 109 | pub fn insert(&mut self, coin: &'a Value, sort_attribute: &'a String) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match target_node { [INFO] [stderr] 114 | | &mut Some(ref mut subnode) => subnode.insert(coin, sort_attribute), [INFO] [stderr] 115 | | &mut None => { [INFO] [stderr] 116 | | let new_node = Node { left_node: None, right_node: None, value: coin }; [INFO] [stderr] ... | [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [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] 113 | match *target_node { [INFO] [stderr] 114 | Some(ref mut subnode) => subnode.insert(coin, sort_attribute), [INFO] [stderr] 115 | None => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:122:47 [INFO] [stderr] | [INFO] [stderr] 122 | pub fn inorder(&mut self, sort_attribute: &'a String, recursion_depth: &mut u32) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | / match &mut self.right_node { [INFO] [stderr] 126 | | &mut Some(ref mut subnode) => subnode.inorder(&sort_attribute, recursion_depth), [INFO] [stderr] 127 | | &mut None => {} [INFO] [stderr] 128 | | } [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] 125 | match *(&mut self.right_node) { [INFO] [stderr] 126 | Some(ref mut subnode) => subnode.inorder(&sort_attribute, recursion_depth), [INFO] [stderr] 127 | None => {} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/test.rs:49:39 [INFO] [stderr] | [INFO] [stderr] 49 | "volume_24h": 8561930000.0, [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `8_561_930_000.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/test.rs:50:39 [INFO] [stderr] | [INFO] [stderr] 50 | "market_cap": 146690002871.0 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider: `146_690_002_871.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/test.rs:59:39 [INFO] [stderr] | [INFO] [stderr] 59 | "volume_24h": 2561930000.0, [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `2_561_930_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/test.rs:60:39 [INFO] [stderr] | [INFO] [stderr] 60 | "market_cap": 86690002871.0 [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `86_690_002_871.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/test.rs:69:39 [INFO] [stderr] | [INFO] [stderr] 69 | "volume_24h": 761930000.0, [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `761_930_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/test.rs:70:39 [INFO] [stderr] | [INFO] [stderr] 70 | "market_cap": 16690002871.0 [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `16_690_002_871.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/test.rs:79:39 [INFO] [stderr] | [INFO] [stderr] 79 | "volume_24h": 1930000.0, [INFO] [stderr] | ^^^^^^^^^ help: consider: `1_930_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/test.rs:80:39 [INFO] [stderr] | [INFO] [stderr] 80 | "market_cap": 690002871.0 [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `690_002_871.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | return n; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `n` [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/main.rs:61:14 [INFO] [stderr] | [INFO] [stderr] 61 | 1 => return "market_cap".to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"market_cap".to_string()` [INFO] [stderr] | [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/main.rs:62:14 [INFO] [stderr] | [INFO] [stderr] 62 | 2 => return "price".to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"price".to_string()` [INFO] [stderr] | [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/main.rs:63:14 [INFO] [stderr] | [INFO] [stderr] 63 | 3 => return "volume_24h".to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `"volume_24h".to_string()` [INFO] [stderr] | [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/main.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | return json; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `json` [INFO] [stderr] | [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/main.rs:79:17 [INFO] [stderr] | [INFO] [stderr] 79 | true => return false, [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [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/main.rs:80:18 [INFO] [stderr] | [INFO] [stderr] 80 | false => return true [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [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/main.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | return response; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `response` [INFO] [stderr] | [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/main.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | return tree; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `tree` [INFO] [stderr] | [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:132:13 [INFO] [stderr] | [INFO] [stderr] 132 | / match &mut self.left_node { [INFO] [stderr] 133 | | &mut Some(ref mut subnode) => subnode.inorder(&sort_attribute, recursion_depth), [INFO] [stderr] 134 | | &mut None => {} [INFO] [stderr] 135 | | } [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] 132 | match *(&mut self.left_node) { [INFO] [stderr] 133 | Some(ref mut subnode) => subnode.inorder(&sort_attribute, recursion_depth), [INFO] [stderr] 134 | None => {} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:141:46 [INFO] [stderr] | [INFO] [stderr] 141 | fn store_content_in_tree<'a>(sort_attribute: &'a String, content: &'a Value) -> Node<'a> { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `crypto-info`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:76:44 [INFO] [stderr] | [INFO] [stderr] 76 | fn check_if_key_in_json(json: &Value, key: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | let ref value: Value = json["data"][key]; [INFO] [stderr] | ----^^^^^^^^^---------------------------- help: try: `let value: &Value = &json["data"][key];` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/main.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / match value.is_null() { [INFO] [stderr] 79 | | true => return false, [INFO] [stderr] 80 | | false => return true [INFO] [stderr] 81 | | }; [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if value.is_null() { return false } else { return true }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:90:19 [INFO] [stderr] | [INFO] [stderr] 90 | let request = String::from(format!("GET /v2/ticker/ HTTP/1.1\r\nHost: api.coinmarketcap.com\r\nConnection: close\r\n\r\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("GET /v2/ticker/ HTTP/1.1\r\nHost: api.coinmarketcap.com\r\nConnection: close\r\n\r\n")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:90:32 [INFO] [stderr] | [INFO] [stderr] 90 | let request = String::from(format!("GET /v2/ticker/ HTTP/1.1\r\nHost: api.coinmarketcap.com\r\nConnection: close\r\n\r\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"GET /v2/ticker/ HTTP/1.1\r\nHost: api.coinmarketcap.com\r\nConnection: close\r\n\r\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | stream.write(request.as_bytes()).expect("could not send request"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:109:63 [INFO] [stderr] | [INFO] [stderr] 109 | pub fn insert(&mut self, coin: &'a Value, sort_attribute: &'a String) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match target_node { [INFO] [stderr] 114 | | &mut Some(ref mut subnode) => subnode.insert(coin, sort_attribute), [INFO] [stderr] 115 | | &mut None => { [INFO] [stderr] 116 | | let new_node = Node { left_node: None, right_node: None, value: coin }; [INFO] [stderr] ... | [INFO] [stderr] 119 | | } [INFO] [stderr] 120 | | } [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] 113 | match *target_node { [INFO] [stderr] 114 | Some(ref mut subnode) => subnode.insert(coin, sort_attribute), [INFO] [stderr] 115 | None => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:122:47 [INFO] [stderr] | [INFO] [stderr] 122 | pub fn inorder(&mut self, sort_attribute: &'a String, recursion_depth: &mut u32) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | / match &mut self.right_node { [INFO] [stderr] 126 | | &mut Some(ref mut subnode) => subnode.inorder(&sort_attribute, recursion_depth), [INFO] [stderr] 127 | | &mut None => {} [INFO] [stderr] 128 | | } [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] 125 | match *(&mut self.right_node) { [INFO] [stderr] 126 | Some(ref mut subnode) => subnode.inorder(&sort_attribute, recursion_depth), [INFO] [stderr] 127 | None => {} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:132:13 [INFO] [stderr] | [INFO] [stderr] 132 | / match &mut self.left_node { [INFO] [stderr] 133 | | &mut Some(ref mut subnode) => subnode.inorder(&sort_attribute, recursion_depth), [INFO] [stderr] 134 | | &mut None => {} [INFO] [stderr] 135 | | } [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] 132 | match *(&mut self.left_node) { [INFO] [stderr] 133 | Some(ref mut subnode) => subnode.inorder(&sort_attribute, recursion_depth), [INFO] [stderr] 134 | None => {} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:141:46 [INFO] [stderr] | [INFO] [stderr] 141 | fn store_content_in_tree<'a>(sort_attribute: &'a String, content: &'a Value) -> Node<'a> { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `crypto-info`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "70b3a6335da43639670a14239dcaa05c82d8dc5d3559caa1ba398e3f19621e26"` [INFO] running `"docker" "rm" "-f" "70b3a6335da43639670a14239dcaa05c82d8dc5d3559caa1ba398e3f19621e26"` [INFO] [stdout] 70b3a6335da43639670a14239dcaa05c82d8dc5d3559caa1ba398e3f19621e26