[INFO] crate randomforests 0.1.0 is already in cache [INFO] extracting crate randomforests 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/randomforests/0.1.0 [INFO] extracting crate randomforests 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/randomforests/0.1.0 [INFO] validating manifest of randomforests-0.1.0 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 randomforests-0.1.0 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 randomforests-0.1.0 [INFO] finished frobbing randomforests-0.1.0 [INFO] frobbed toml for randomforests-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/randomforests/0.1.0/Cargo.toml [INFO] started frobbing randomforests-0.1.0 [INFO] finished frobbing randomforests-0.1.0 [INFO] frobbed toml for randomforests-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/randomforests/0.1.0/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 randomforests-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/randomforests/0.1.0:/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] 74143087a5e324c2369a13745004e9afd7da18f429ce4fc800424d5969e70d93 [INFO] running `"docker" "start" "-a" "74143087a5e324c2369a13745004e9afd7da18f429ce4fc800424d5969e70d93"` [INFO] [stderr] Checking randomforests v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:233:13 [INFO] [stderr] | [INFO] [stderr] 233 | print!("Item: {:?}\n", item); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:236:17 [INFO] [stderr] | [INFO] [stderr] 236 | print!("\tAttribute: {:?}\n", attribute); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:259:17 [INFO] [stderr] | [INFO] [stderr] 259 | / print!( [INFO] [stderr] 260 | | "\tE(t) = {:?}, E(f) = {:?}\n", [INFO] [stderr] 261 | | _true_branch_entropy, _false_branch_entropy [INFO] [stderr] 262 | | ); [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:643:9 [INFO] [stderr] | [INFO] [stderr] 643 | print!("decision: {:?}\n", t.decision); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:696:9 [INFO] [stderr] | [INFO] [stderr] 696 | print!("decision: {:?}\n", t.decision); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:807:9 [INFO] [stderr] | [INFO] [stderr] 807 | print!("answer = {:?}\n", answer); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:233:13 [INFO] [stderr] | [INFO] [stderr] 233 | print!("Item: {:?}\n", item); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:236:17 [INFO] [stderr] | [INFO] [stderr] 236 | print!("\tAttribute: {:?}\n", attribute); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:259:17 [INFO] [stderr] | [INFO] [stderr] 259 | / print!( [INFO] [stderr] 260 | | "\tE(t) = {:?}, E(f) = {:?}\n", [INFO] [stderr] 261 | | _true_branch_entropy, _false_branch_entropy [INFO] [stderr] 262 | | ); [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:643:9 [INFO] [stderr] | [INFO] [stderr] 643 | print!("decision: {:?}\n", t.decision); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:696:9 [INFO] [stderr] | [INFO] [stderr] 696 | print!("decision: {:?}\n", t.decision); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/lib.rs:807:9 [INFO] [stderr] | [INFO] [stderr] 807 | print!("answer = {:?}\n", answer); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | / return TreeConfig { [INFO] [stderr] 21 | | decision: "category".to_string(), [INFO] [stderr] 22 | | max_depth: 70, [INFO] [stderr] 23 | | min_count: 1, [INFO] [stderr] 24 | | entropy_threshold: 0.01, [INFO] [stderr] 25 | | }; [INFO] [stderr] | |__________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 20 | TreeConfig { [INFO] [stderr] 21 | decision: "category".to_string(), [INFO] [stderr] 22 | max_depth: 70, [INFO] [stderr] 23 | min_count: 1, [INFO] [stderr] 24 | entropy_threshold: 0.01, [INFO] [stderr] 25 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | return counter; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `counter` [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/lib.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | return most_frequent_value; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `most_frequent_value` [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/lib.rs:155:5 [INFO] [stderr] | [INFO] [stderr] 155 | / return Split { [INFO] [stderr] 156 | | gain: 0.0, [INFO] [stderr] 157 | | true_branch, [INFO] [stderr] 158 | | false_branch, [INFO] [stderr] ... | [INFO] [stderr] 162 | | }, [INFO] [stderr] 163 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 155 | Split { [INFO] [stderr] 156 | gain: 0.0, [INFO] [stderr] 157 | true_branch, [INFO] [stderr] 158 | false_branch, [INFO] [stderr] 159 | attribute: "category".to_string(), [INFO] [stderr] 160 | pivot: Value { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:174:5 [INFO] [stderr] | [INFO] [stderr] 174 | return entropy; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `entropy` [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/lib.rs:300:13 [INFO] [stderr] | [INFO] [stderr] 300 | 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: unneeded return statement [INFO] [stderr] --> src/lib.rs:302:13 [INFO] [stderr] | [INFO] [stderr] 302 | / return Some(Box::new(DecisionTree { [INFO] [stderr] 303 | | decision: value_frequency(&config.decision, &data), [INFO] [stderr] 304 | | true_branch: None, [INFO] [stderr] 305 | | false_branch: None, [INFO] [stderr] 306 | | attribute: None, [INFO] [stderr] 307 | | pivot: None, [INFO] [stderr] 308 | | })); [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 302 | Some(Box::new(DecisionTree { [INFO] [stderr] 303 | decision: value_frequency(&config.decision, &data), [INFO] [stderr] 304 | true_branch: None, [INFO] [stderr] 305 | false_branch: None, [INFO] [stderr] 306 | attribute: None, [INFO] [stderr] 307 | pivot: None, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:343:5 [INFO] [stderr] | [INFO] [stderr] 343 | return shuffled; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `shuffled` [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/lib.rs:364:9 [INFO] [stderr] | [INFO] [stderr] 364 | / return RandomForest { [INFO] [stderr] 365 | | trees [INFO] [stderr] 366 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 364 | RandomForest { [INFO] [stderr] 365 | trees [INFO] [stderr] 366 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:382:9 [INFO] [stderr] | [INFO] [stderr] 382 | return results; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `results` [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: unused variable: `n` [INFO] [stderr] --> src/lib.rs:358:13 [INFO] [stderr] | [INFO] [stderr] 358 | for n in 0..num_trees { [INFO] [stderr] | ^ help: consider using `_n` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `TreeConfig` [INFO] [stderr] --> src/lib.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> TreeConfig { [INFO] [stderr] 20 | | return TreeConfig { [INFO] [stderr] 21 | | decision: "category".to_string(), [INFO] [stderr] 22 | | max_depth: 70, [INFO] [stderr] ... | [INFO] [stderr] 25 | | }; [INFO] [stderr] 26 | | } [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] 10 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:107:33 [INFO] [stderr] | [INFO] [stderr] 107 | fn unique_values<'a>(attribute: &String, data: &'a Vec) -> HashMap<&'a Value, usize> { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:107:48 [INFO] [stderr] | [INFO] [stderr] 107 | fn unique_values<'a>(attribute: &String, data: &'a Vec) -> HashMap<&'a Value, usize> { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Item]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lib.rs:109:26 [INFO] [stderr] | [INFO] [stderr] 109 | for mut item in data.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match value { [INFO] [stderr] 112 | | Some(v) => { [INFO] [stderr] 113 | | let current = counter.entry(v).or_insert(0); [INFO] [stderr] 114 | | *current += 1; [INFO] [stderr] 115 | | } [INFO] [stderr] 116 | | None => {} [INFO] [stderr] 117 | | } [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] 111 | if let Some(v) = value { [INFO] [stderr] 112 | let current = counter.entry(v).or_insert(0); [INFO] [stderr] 113 | *current += 1; [INFO] [stderr] 114 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:123:31 [INFO] [stderr] | [INFO] [stderr] 123 | fn value_frequency(attribute: &String, data: &Dataset) -> Option { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:123:46 [INFO] [stderr] | [INFO] [stderr] 123 | fn value_frequency(attribute: &String, data: &Dataset) -> Option { [INFO] [stderr] | ^^^^^^^^ [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:137:31 [INFO] [stderr] | [INFO] [stderr] 137 | fn calculate_split(attribute: &String, pivot: &Value, data: &Dataset) -> Split { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:137:61 [INFO] [stderr] | [INFO] [stderr] 137 | fn calculate_split(attribute: &String, pivot: &Value, data: &Dataset) -> Split { [INFO] [stderr] | ^^^^^^^^ [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lib.rs:141:22 [INFO] [stderr] | [INFO] [stderr] 141 | for item in data.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | / match value { [INFO] [stderr] 144 | | Some(v) => { [INFO] [stderr] 145 | | if v == pivot { [INFO] [stderr] 146 | | true_branch.push(item.clone()); [INFO] [stderr] ... | [INFO] [stderr] 151 | | None => {} [INFO] [stderr] 152 | | } [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] 143 | if let Some(v) = value { [INFO] [stderr] 144 | if v == pivot { [INFO] [stderr] 145 | true_branch.push(item.clone()); [INFO] [stderr] 146 | } else { [INFO] [stderr] 147 | false_branch.push(item.clone()); [INFO] [stderr] 148 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:166:23 [INFO] [stderr] | [INFO] [stderr] 166 | fn entropy(attribute: &String, data: &Dataset) -> f64 { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:166:38 [INFO] [stderr] | [INFO] [stderr] 166 | fn entropy(attribute: &String, data: &Dataset) -> f64 { [INFO] [stderr] | ^^^^^^^^ [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:242:29 [INFO] [stderr] | [INFO] [stderr] 242 | let pivot = item.get(attribute).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&item[attribute]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:338:25 [INFO] [stderr] | [INFO] [stderr] 338 | fn sample_dataset(data: &Dataset, size: usize) -> Dataset { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 339 | let mut rng = rand::thread_rng(); [INFO] [stderr] 340 | let mut shuffled = data.clone(); [INFO] [stderr] | ------------ help: change `data.clone()` to: `data.to_owned()` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:355:63 [INFO] [stderr] | [INFO] [stderr] 355 | pub fn build(attribute: String, config: TreeConfig, data: &Dataset, num_trees: usize, subsample_size: usize) -> RandomForest { [INFO] [stderr] | ^^^^^^^^ [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:374:13 [INFO] [stderr] | [INFO] [stderr] 374 | / match value { [INFO] [stderr] 375 | | Some(v) => { [INFO] [stderr] 376 | | let count = results.entry(v).or_insert(0); [INFO] [stderr] 377 | | *count += 1; [INFO] [stderr] 378 | | }, [INFO] [stderr] 379 | | None => {} [INFO] [stderr] 380 | | } [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] 374 | if let Some(v) = value { [INFO] [stderr] 375 | let count = results.entry(v).or_insert(0); [INFO] [stderr] 376 | *count += 1; [INFO] [stderr] 377 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | / return TreeConfig { [INFO] [stderr] 21 | | decision: "category".to_string(), [INFO] [stderr] 22 | | max_depth: 70, [INFO] [stderr] 23 | | min_count: 1, [INFO] [stderr] 24 | | entropy_threshold: 0.01, [INFO] [stderr] 25 | | }; [INFO] [stderr] | |__________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 20 | TreeConfig { [INFO] [stderr] 21 | decision: "category".to_string(), [INFO] [stderr] 22 | max_depth: 70, [INFO] [stderr] 23 | min_count: 1, [INFO] [stderr] 24 | entropy_threshold: 0.01, [INFO] [stderr] 25 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:119:5 [INFO] [stderr] | [INFO] [stderr] 119 | return counter; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `counter` [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/lib.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | return most_frequent_value; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `most_frequent_value` [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/lib.rs:155:5 [INFO] [stderr] | [INFO] [stderr] 155 | / return Split { [INFO] [stderr] 156 | | gain: 0.0, [INFO] [stderr] 157 | | true_branch, [INFO] [stderr] 158 | | false_branch, [INFO] [stderr] ... | [INFO] [stderr] 162 | | }, [INFO] [stderr] 163 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 155 | Split { [INFO] [stderr] 156 | gain: 0.0, [INFO] [stderr] 157 | true_branch, [INFO] [stderr] 158 | false_branch, [INFO] [stderr] 159 | attribute: "category".to_string(), [INFO] [stderr] 160 | pivot: Value { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:174:5 [INFO] [stderr] | [INFO] [stderr] 174 | return entropy; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `entropy` [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/lib.rs:300:13 [INFO] [stderr] | [INFO] [stderr] 300 | 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: unneeded return statement [INFO] [stderr] --> src/lib.rs:302:13 [INFO] [stderr] | [INFO] [stderr] 302 | / return Some(Box::new(DecisionTree { [INFO] [stderr] 303 | | decision: value_frequency(&config.decision, &data), [INFO] [stderr] 304 | | true_branch: None, [INFO] [stderr] 305 | | false_branch: None, [INFO] [stderr] 306 | | attribute: None, [INFO] [stderr] 307 | | pivot: None, [INFO] [stderr] 308 | | })); [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 302 | Some(Box::new(DecisionTree { [INFO] [stderr] 303 | decision: value_frequency(&config.decision, &data), [INFO] [stderr] 304 | true_branch: None, [INFO] [stderr] 305 | false_branch: None, [INFO] [stderr] 306 | attribute: None, [INFO] [stderr] 307 | pivot: None, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:343:5 [INFO] [stderr] | [INFO] [stderr] 343 | return shuffled; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `shuffled` [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/lib.rs:364:9 [INFO] [stderr] | [INFO] [stderr] 364 | / return RandomForest { [INFO] [stderr] 365 | | trees [INFO] [stderr] 366 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 364 | RandomForest { [INFO] [stderr] 365 | trees [INFO] [stderr] 366 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:382:9 [INFO] [stderr] | [INFO] [stderr] 382 | return results; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `results` [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: unused variable: `n` [INFO] [stderr] --> src/lib.rs:358:13 [INFO] [stderr] | [INFO] [stderr] 358 | for n in 0..num_trees { [INFO] [stderr] | ^ help: consider using `_n` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `TreeConfig` [INFO] [stderr] --> src/lib.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn new() -> TreeConfig { [INFO] [stderr] 20 | | return TreeConfig { [INFO] [stderr] 21 | | decision: "category".to_string(), [INFO] [stderr] 22 | | max_depth: 70, [INFO] [stderr] ... | [INFO] [stderr] 25 | | }; [INFO] [stderr] 26 | | } [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] 10 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:107:33 [INFO] [stderr] | [INFO] [stderr] 107 | fn unique_values<'a>(attribute: &String, data: &'a Vec) -> HashMap<&'a Value, usize> { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:107:48 [INFO] [stderr] | [INFO] [stderr] 107 | fn unique_values<'a>(attribute: &String, data: &'a Vec) -> HashMap<&'a Value, usize> { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[Item]` [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lib.rs:109:26 [INFO] [stderr] | [INFO] [stderr] 109 | for mut item in data.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / match value { [INFO] [stderr] 112 | | Some(v) => { [INFO] [stderr] 113 | | let current = counter.entry(v).or_insert(0); [INFO] [stderr] 114 | | *current += 1; [INFO] [stderr] 115 | | } [INFO] [stderr] 116 | | None => {} [INFO] [stderr] 117 | | } [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] 111 | if let Some(v) = value { [INFO] [stderr] 112 | let current = counter.entry(v).or_insert(0); [INFO] [stderr] 113 | *current += 1; [INFO] [stderr] 114 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:123:31 [INFO] [stderr] | [INFO] [stderr] 123 | fn value_frequency(attribute: &String, data: &Dataset) -> Option { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:123:46 [INFO] [stderr] | [INFO] [stderr] 123 | fn value_frequency(attribute: &String, data: &Dataset) -> Option { [INFO] [stderr] | ^^^^^^^^ [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:137:31 [INFO] [stderr] | [INFO] [stderr] 137 | fn calculate_split(attribute: &String, pivot: &Value, data: &Dataset) -> Split { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:137:61 [INFO] [stderr] | [INFO] [stderr] 137 | fn calculate_split(attribute: &String, pivot: &Value, data: &Dataset) -> Split { [INFO] [stderr] | ^^^^^^^^ [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lib.rs:141:22 [INFO] [stderr] | [INFO] [stderr] 141 | for item in data.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | / match value { [INFO] [stderr] 144 | | Some(v) => { [INFO] [stderr] 145 | | if v == pivot { [INFO] [stderr] 146 | | true_branch.push(item.clone()); [INFO] [stderr] ... | [INFO] [stderr] 151 | | None => {} [INFO] [stderr] 152 | | } [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] 143 | if let Some(v) = value { [INFO] [stderr] 144 | if v == pivot { [INFO] [stderr] 145 | true_branch.push(item.clone()); [INFO] [stderr] 146 | } else { [INFO] [stderr] 147 | false_branch.push(item.clone()); [INFO] [stderr] 148 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:166:23 [INFO] [stderr] | [INFO] [stderr] 166 | fn entropy(attribute: &String, data: &Dataset) -> f64 { [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:166:38 [INFO] [stderr] | [INFO] [stderr] 166 | fn entropy(attribute: &String, data: &Dataset) -> f64 { [INFO] [stderr] | ^^^^^^^^ [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:242:29 [INFO] [stderr] | [INFO] [stderr] 242 | let pivot = item.get(attribute).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&item[attribute]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:338:25 [INFO] [stderr] | [INFO] [stderr] 338 | fn sample_dataset(data: &Dataset, size: usize) -> Dataset { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 339 | let mut rng = rand::thread_rng(); [INFO] [stderr] 340 | let mut shuffled = data.clone(); [INFO] [stderr] | ------------ help: change `data.clone()` to: `data.to_owned()` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:355:63 [INFO] [stderr] | [INFO] [stderr] 355 | pub fn build(attribute: String, config: TreeConfig, data: &Dataset, num_trees: usize, subsample_size: usize) -> RandomForest { [INFO] [stderr] | ^^^^^^^^ [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:374:13 [INFO] [stderr] | [INFO] [stderr] 374 | / match value { [INFO] [stderr] 375 | | Some(v) => { [INFO] [stderr] 376 | | let count = results.entry(v).or_insert(0); [INFO] [stderr] 377 | | *count += 1; [INFO] [stderr] 378 | | }, [INFO] [stderr] 379 | | None => {} [INFO] [stderr] 380 | | } [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] 374 | if let Some(v) = value { [INFO] [stderr] 375 | let count = results.entry(v).or_insert(0); [INFO] [stderr] 376 | *count += 1; [INFO] [stderr] 377 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:453:14 [INFO] [stderr] | [INFO] [stderr] 453 | *unique [INFO] [stderr] | ______________^ [INFO] [stderr] 454 | | .get(&Value { [INFO] [stderr] 455 | | data: "rust".to_string() [INFO] [stderr] 456 | | }) [INFO] [stderr] 457 | | .unwrap(), [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 453 | *&unique[&Value { [INFO] [stderr] 454 | data: "rust".to_string() [INFO] [stderr] 455 | }], [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:461:14 [INFO] [stderr] | [INFO] [stderr] 461 | *unique [INFO] [stderr] | ______________^ [INFO] [stderr] 462 | | .get(&Value { [INFO] [stderr] 463 | | data: "python".to_string() [INFO] [stderr] 464 | | }) [INFO] [stderr] 465 | | .unwrap(), [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 461 | *&unique[&Value { [INFO] [stderr] 462 | data: "python".to_string() [INFO] [stderr] 463 | }], [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.25s [INFO] running `"docker" "inspect" "74143087a5e324c2369a13745004e9afd7da18f429ce4fc800424d5969e70d93"` [INFO] running `"docker" "rm" "-f" "74143087a5e324c2369a13745004e9afd7da18f429ce4fc800424d5969e70d93"` [INFO] [stdout] 74143087a5e324c2369a13745004e9afd7da18f429ce4fc800424d5969e70d93