[INFO] crate test-data-generation 0.0.7 is already in cache [INFO] extracting crate test-data-generation 0.0.7 into work/ex/clippy-test-run/sources/stable/reg/test-data-generation/0.0.7 [INFO] extracting crate test-data-generation 0.0.7 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/test-data-generation/0.0.7 [INFO] validating manifest of test-data-generation-0.0.7 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 test-data-generation-0.0.7 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 test-data-generation-0.0.7 [INFO] finished frobbing test-data-generation-0.0.7 [INFO] frobbed toml for test-data-generation-0.0.7 written to work/ex/clippy-test-run/sources/stable/reg/test-data-generation/0.0.7/Cargo.toml [INFO] started frobbing test-data-generation-0.0.7 [INFO] finished frobbing test-data-generation-0.0.7 [INFO] frobbed toml for test-data-generation-0.0.7 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/test-data-generation/0.0.7/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 test-data-generation-0.0.7 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/test-data-generation/0.0.7:/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] 11e4790f062c2d4ebfb5886ac6a906695475a4e391d633c3e11156dfe3014d7e [INFO] running `"docker" "start" "-a" "11e4790f062c2d4ebfb5886ac6a906695475a4e391d633c3e11156dfe3014d7e"` [INFO] [stderr] warning: profile `doc` is deprecated and has no effect [INFO] [stderr] Compiling libc v0.2.48 [INFO] [stderr] Compiling num-traits v0.2.6 [INFO] [stderr] Compiling proc-macro2 v0.4.26 [INFO] [stderr] Compiling num-integer v0.1.39 [INFO] [stderr] Compiling memchr v2.1.3 [INFO] [stderr] Compiling unicode-xid v0.1.0 [INFO] [stderr] Compiling num-iter v0.1.37 [INFO] [stderr] Compiling cc v1.0.28 [INFO] [stderr] Checking cfg-if v0.1.6 [INFO] [stderr] Compiling regex v1.1.0 [INFO] [stderr] Checking lazy_static v1.2.0 [INFO] [stderr] Compiling serde v1.0.85 [INFO] [stderr] Checking serde v0.8.23 [INFO] [stderr] Checking ucd-util v0.1.3 [INFO] [stderr] Compiling ryu v0.2.7 [INFO] [stderr] Checking traitobject v0.1.0 [INFO] [stderr] Checking linked-hash-map v0.5.1 [INFO] [stderr] Checking utf8-ranges v1.0.2 [INFO] [stderr] Compiling regex v0.2.11 [INFO] [stderr] Checking lazy_static v0.2.11 [INFO] [stderr] Checking quick-error v1.2.2 [INFO] [stderr] Checking itoa v0.4.3 [INFO] [stderr] Checking dtoa v0.4.3 [INFO] [stderr] Checking antidote v1.0.0 [INFO] [stderr] Checking log-mdc v0.1.0 [INFO] [stderr] Checking crossbeam v0.2.12 [INFO] [stderr] Checking fnv v1.0.6 [INFO] [stderr] Checking levenshtein v1.0.3 [INFO] [stderr] Checking crossbeam v0.3.2 [INFO] [stderr] Checking yaml-rust v0.3.5 [INFO] [stderr] Checking log v0.4.6 [INFO] [stderr] Checking thread_local v0.3.6 [INFO] [stderr] Checking unsafe-any v0.4.2 [INFO] [stderr] Checking regex-syntax v0.6.5 [INFO] [stderr] Checking regex-syntax v0.5.6 [INFO] [stderr] Compiling miniz-sys v0.1.11 [INFO] [stderr] Checking yaml-rust v0.4.2 [INFO] [stderr] Checking humantime v1.2.0 [INFO] [stderr] Checking log v0.3.9 [INFO] [stderr] Checking typemap v0.3.3 [INFO] [stderr] Compiling quote v0.6.11 [INFO] [stderr] Checking time v0.1.42 [INFO] [stderr] Checking memchr v1.0.2 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking serde_test v0.8.23 [INFO] [stderr] Compiling syn v0.15.26 [INFO] [stderr] Checking nom v3.2.1 [INFO] [stderr] Checking ordered-float v1.0.1 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking aho-corasick v0.6.9 [INFO] [stderr] Checking csv-core v0.1.5 [INFO] [stderr] Checking flate2 v0.2.20 [INFO] [stderr] Checking linked-hash-map v0.3.0 [INFO] [stderr] Checking rand v0.3.23 [INFO] [stderr] Checking num v0.1.42 [INFO] [stderr] Checking chrono v0.3.0 [INFO] [stderr] Checking serde-hjson v0.8.2 [INFO] [stderr] Compiling serde_derive v1.0.85 [INFO] [stderr] Checking toml v0.4.10 [INFO] [stderr] Checking serde_json v1.0.37 [INFO] [stderr] Checking serde-value v0.5.3 [INFO] [stderr] Checking serde_yaml v0.7.5 [INFO] [stderr] Checking csv v1.0.5 [INFO] [stderr] Checking config v0.8.0 [INFO] [stderr] Checking log4rs v0.7.0 [INFO] [stderr] Checking test-data-generation v0.0.7 (/opt/crater/workdir) [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/profile/mod.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | pub mod profile; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/profile/profile.rs:557:3 [INFO] [stderr] | [INFO] [stderr] 557 | generated [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/profile/profile.rs:555:19 [INFO] [stderr] | [INFO] [stderr] 555 | let generated = self.generate_from_pattern(pattern.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/macros.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | nbr [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:644:34 [INFO] [stderr] | [INFO] [stderr] 644 | let x: u32 = random_between!(rnd_start, rnd_end); [INFO] [stderr] | ----------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/macros.rs:80:20 [INFO] [stderr] | [INFO] [stderr] 80 | let nbr = rng.gen_range::($a as u32, $b as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:644:34 [INFO] [stderr] | [INFO] [stderr] 644 | let x: u32 = random_between!(rnd_start, rnd_end); [INFO] [stderr] | ----------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/profile/mod.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | pub mod profile; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/profile/profile.rs:557:3 [INFO] [stderr] | [INFO] [stderr] 557 | generated [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/profile/profile.rs:555:19 [INFO] [stderr] | [INFO] [stderr] 555 | let generated = self.generate_from_pattern(pattern.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/macros.rs:82:13 [INFO] [stderr] | [INFO] [stderr] 82 | nbr [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:644:34 [INFO] [stderr] | [INFO] [stderr] 644 | let x: u32 = random_between!(rnd_start, rnd_end); [INFO] [stderr] | ----------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/macros.rs:80:20 [INFO] [stderr] | [INFO] [stderr] 80 | let nbr = rng.gen_range::($a as u32, $b as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:644:34 [INFO] [stderr] | [INFO] [stderr] 644 | let x: u32 = random_between!(rnd_start, rnd_end); [INFO] [stderr] | ----------------------------------- in this macro invocation [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `data_sample_parser::DataSampleParser` [INFO] [stderr] --> src/data_sample_parser.rs:118:2 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn new() -> DataSampleParser { [INFO] [stderr] | _____^ [INFO] [stderr] 119 | | [INFO] [stderr] 120 | | DataSampleParser{ [INFO] [stderr] 121 | | issues: false, [INFO] [stderr] ... | [INFO] [stderr] 124 | | } [INFO] [stderr] 125 | | } [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] 94 | #[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/data_sample_parser.rs:146:24 [INFO] [stderr] | [INFO] [stderr] 146 | pub fn new_with(path: &String) -> DataSampleParser { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:173:25 [INFO] [stderr] | [INFO] [stderr] 173 | pub fn from_file(path: &String) -> DataSampleParser { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:228:43 [INFO] [stderr] | [INFO] [stderr] 228 | pub fn analyze_csv_file(&mut self, path: &String) -> Result { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:277:43 [INFO] [stderr] | [INFO] [stderr] 277 | pub fn analyze_csv_data(&mut self, data: &String) -> Result { [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: for loop over `rdr.headers()`, which is a `Result`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/data_sample_parser.rs:290:18 [INFO] [stderr] | [INFO] [stderr] 290 | for headers in rdr.headers() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_result)] on by default [INFO] [stderr] = help: consider replacing `for headers in rdr.headers()` with `if let Ok(headers) = rdr.headers()` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_result [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/data_sample_parser.rs:294:32 [INFO] [stderr] | [INFO] [stderr] 294 | self.profiles.insert(format!("{}",header), p); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `header.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/data_sample_parser.rs:345:10 [INFO] [stderr] | [INFO] [stderr] 345 | rec_cnt = rec_cnt + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rec_cnt += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `data_sample_parser::DataSampleParser` [INFO] [stderr] --> src/data_sample_parser.rs:118:2 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn new() -> DataSampleParser { [INFO] [stderr] | _____^ [INFO] [stderr] 119 | | [INFO] [stderr] 120 | | DataSampleParser{ [INFO] [stderr] 121 | | issues: false, [INFO] [stderr] ... | [INFO] [stderr] 124 | | } [INFO] [stderr] 125 | | } [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] 94 | #[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/data_sample_parser.rs:146:24 [INFO] [stderr] | [INFO] [stderr] 146 | pub fn new_with(path: &String) -> DataSampleParser { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:173:25 [INFO] [stderr] | [INFO] [stderr] 173 | pub fn from_file(path: &String) -> DataSampleParser { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:555:55 [INFO] [stderr] | [INFO] [stderr] 555 | pub fn generate_csv(&mut self, row_count: u32, path: &String) -> Result<(), Box> { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:608:50 [INFO] [stderr] | [INFO] [stderr] 608 | pub fn levenshtein_distance(&mut self, control: &String, experiment: &String) -> usize { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:608:71 [INFO] [stderr] | [INFO] [stderr] 608 | pub fn levenshtein_distance(&mut self, control: &String, experiment: &String) -> usize { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:634:44 [INFO] [stderr] | [INFO] [stderr] 634 | pub fn realistic_test(&mut self, control: &String, experiment: &String) -> 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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:634:65 [INFO] [stderr] | [INFO] [stderr] 634 | pub fn realistic_test(&mut self, control: &String, experiment: &String) -> 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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:228:43 [INFO] [stderr] | [INFO] [stderr] 228 | pub fn analyze_csv_file(&mut self, path: &String) -> Result { [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:111:8 [INFO] [stderr] | [INFO] [stderr] 111 | (1 as f64 - ((total - diff)/total)) * 100 as f64 [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(1)` [INFO] [stderr] | [INFO] [stderr] ::: src/data_sample_parser.rs:639:9 [INFO] [stderr] | [INFO] [stderr] 639 | realistic_test!(control, experiment) [INFO] [stderr] | ------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:111:45 [INFO] [stderr] | [INFO] [stderr] 111 | (1 as f64 - ((total - diff)/total)) * 100 as f64 [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] ::: src/data_sample_parser.rs:639:9 [INFO] [stderr] | [INFO] [stderr] 639 | realistic_test!(control, experiment) [INFO] [stderr] | ------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:689:31 [INFO] [stderr] | [INFO] [stderr] 689 | pub fn save(&mut self, path: &String) -> Result<(bool), io::Error> { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:277:43 [INFO] [stderr] | [INFO] [stderr] 277 | pub fn analyze_csv_data(&mut self, data: &String) -> Result { [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: for loop over `rdr.headers()`, which is a `Result`. This is more readably written as an `if let` statement. [INFO] [stderr] --> src/data_sample_parser.rs:290:18 [INFO] [stderr] | [INFO] [stderr] 290 | for headers in rdr.headers() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::for_loop_over_result)] on by default [INFO] [stderr] = help: consider replacing `for headers in rdr.headers()` with `if let Ok(headers) = rdr.headers()` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_loop_over_result [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/data_sample_parser.rs:294:32 [INFO] [stderr] | [INFO] [stderr] 294 | self.profiles.insert(format!("{}",header), p); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `header.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] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/data_sample_parser.rs:345:10 [INFO] [stderr] | [INFO] [stderr] 345 | rec_cnt = rec_cnt + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rec_cnt += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:555:55 [INFO] [stderr] | [INFO] [stderr] 555 | pub fn generate_csv(&mut self, row_count: u32, path: &String) -> Result<(), Box> { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/configs.rs:59:19 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn new(path: &String) -> Configs { [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: use of `expect` followed by a function call [INFO] [stderr] --> src/configs.rs:126:38 [INFO] [stderr] | [INFO] [stderr] 126 | let mut f = File::open(&self.file).expect(&format!("Error: Configuration file not found at {}", &self.file.to_string())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Error: Configuration file not found at {}", &self.file.to_string()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:608:50 [INFO] [stderr] | [INFO] [stderr] 608 | pub fn levenshtein_distance(&mut self, control: &String, experiment: &String) -> usize { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:608:71 [INFO] [stderr] | [INFO] [stderr] 608 | pub fn levenshtein_distance(&mut self, control: &String, experiment: &String) -> usize { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:634:44 [INFO] [stderr] | [INFO] [stderr] 634 | pub fn realistic_test(&mut self, control: &String, experiment: &String) -> 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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:634:65 [INFO] [stderr] | [INFO] [stderr] 634 | pub fn realistic_test(&mut self, control: &String, experiment: &String) -> 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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:111:8 [INFO] [stderr] | [INFO] [stderr] 111 | (1 as f64 - ((total - diff)/total)) * 100 as f64 [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(1)` [INFO] [stderr] | [INFO] [stderr] ::: src/data_sample_parser.rs:639:9 [INFO] [stderr] | [INFO] [stderr] 639 | realistic_test!(control, experiment) [INFO] [stderr] | ------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:111:45 [INFO] [stderr] | [INFO] [stderr] 111 | (1 as f64 - ((total - diff)/total)) * 100 as f64 [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] ::: src/data_sample_parser.rs:639:9 [INFO] [stderr] | [INFO] [stderr] 639 | realistic_test!(control, experiment) [INFO] [stderr] | ------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/data_sample_parser.rs:689:31 [INFO] [stderr] | [INFO] [stderr] 689 | pub fn save(&mut self, path: &String) -> Result<(bool), io::Error> { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/configs.rs:59:19 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn new(path: &String) -> Configs { [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: use of `expect` followed by a function call [INFO] [stderr] --> src/configs.rs:126:38 [INFO] [stderr] | [INFO] [stderr] 126 | let mut f = File::open(&self.file).expect(&format!("Error: Configuration file not found at {}", &self.file.to_string())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Error: Configuration file not found at {}", &self.file.to_string()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `profile::profile::Profile` [INFO] [stderr] --> src/profile/profile.rs:177:2 [INFO] [stderr] | [INFO] [stderr] 177 | pub fn new() -> Profile { [INFO] [stderr] | _____^ [INFO] [stderr] 178 | | Profile { [INFO] [stderr] 179 | | patterns: PatternMap::new(), [INFO] [stderr] 180 | | pattern_total: 0, [INFO] [stderr] ... | [INFO] [stderr] 190 | | } [INFO] [stderr] 191 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 136 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `profile::profile::Profile` [INFO] [stderr] --> src/profile/profile.rs:177:2 [INFO] [stderr] | [INFO] [stderr] 177 | pub fn new() -> Profile { [INFO] [stderr] | _____^ [INFO] [stderr] 178 | | Profile { [INFO] [stderr] 179 | | patterns: PatternMap::new(), [INFO] [stderr] 180 | | pattern_total: 0, [INFO] [stderr] ... | [INFO] [stderr] 190 | | } [INFO] [stderr] 191 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 136 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/profile/profile.rs:367:4 [INFO] [stderr] | [INFO] [stderr] 367 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:422:66 [INFO] [stderr] | [INFO] [stderr] 422 | self.pattern_percentages.push((self.pattern_keys[m].clone(), (self.pattern_vals[m] as f64 / self.pattern_total as f64) * 100.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.pattern_vals[m])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:422:96 [INFO] [stderr] | [INFO] [stderr] 422 | self.pattern_percentages.push((self.pattern_keys[m].clone(), (self.pattern_vals[m] as f64 / self.pattern_total as f64) * 100.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.pattern_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/profile/profile.rs:367:4 [INFO] [stderr] | [INFO] [stderr] 367 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:471:29 [INFO] [stderr] | [INFO] [stderr] 471 | size_ranks.insert(*key, (*self.sizes.get(key).unwrap() as f64 / self.size_total as f64)*100.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(*self.sizes.get(key).unwrap())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/profile/profile.rs:471:30 [INFO] [stderr] | [INFO] [stderr] 471 | size_ranks.insert(*key, (*self.sizes.get(key).unwrap() as f64 / self.size_total as f64)*100.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.sizes[key]` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:471:68 [INFO] [stderr] | [INFO] [stderr] 471 | size_ranks.insert(*key, (*self.sizes.get(key).unwrap() as f64 / self.size_total as f64)*100.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.size_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/profile/profile.rs:482:17 [INFO] [stderr] | [INFO] [stderr] 482 | *state = (k, state.1 + &v); [INFO] [stderr] | ^^^^^^^^^^-- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `v` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:50:30 [INFO] [stderr] | [INFO] [stderr] 50 | rng.gen_range::(0 as f64,100 as f64) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:543:23 [INFO] [stderr] | [INFO] [stderr] 543 | let s: f64 = random_percentage!(); [INFO] [stderr] | -------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:50:39 [INFO] [stderr] | [INFO] [stderr] 50 | rng.gen_range::(0 as f64,100 as f64) [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:543:23 [INFO] [stderr] | [INFO] [stderr] 543 | let s: f64 = random_percentage!(); [INFO] [stderr] | -------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:422:66 [INFO] [stderr] | [INFO] [stderr] 422 | self.pattern_percentages.push((self.pattern_keys[m].clone(), (self.pattern_vals[m] as f64 / self.pattern_total as f64) * 100.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.pattern_vals[m])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:422:96 [INFO] [stderr] | [INFO] [stderr] 422 | self.pattern_percentages.push((self.pattern_keys[m].clone(), (self.pattern_vals[m] as f64 / self.pattern_total as f64) * 100.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.pattern_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:471:29 [INFO] [stderr] | [INFO] [stderr] 471 | size_ranks.insert(*key, (*self.sizes.get(key).unwrap() as f64 / self.size_total as f64)*100.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(*self.sizes.get(key).unwrap())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/profile/profile.rs:471:30 [INFO] [stderr] | [INFO] [stderr] 471 | size_ranks.insert(*key, (*self.sizes.get(key).unwrap() as f64 / self.size_total as f64)*100.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.sizes[key]` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:471:68 [INFO] [stderr] | [INFO] [stderr] 471 | size_ranks.insert(*key, (*self.sizes.get(key).unwrap() as f64 / self.size_total as f64)*100.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.size_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:612:21 [INFO] [stderr] | [INFO] [stderr] 612 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: taken reference of right operand [INFO] [stderr] --> src/profile/profile.rs:482:17 [INFO] [stderr] | [INFO] [stderr] 482 | *state = (k, state.1 + &v); [INFO] [stderr] | ^^^^^^^^^^-- [INFO] [stderr] | | [INFO] [stderr] | help: use the right value directly: `v` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:617:22 [INFO] [stderr] | [INFO] [stderr] 617 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:618:22 [INFO] [stderr] | [INFO] [stderr] 618 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:624:22 [INFO] [stderr] | [INFO] [stderr] 624 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:625:22 [INFO] [stderr] | [INFO] [stderr] 625 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:50:30 [INFO] [stderr] | [INFO] [stderr] 50 | rng.gen_range::(0 as f64,100 as f64) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:543:23 [INFO] [stderr] | [INFO] [stderr] 543 | let s: f64 = random_percentage!(); [INFO] [stderr] | -------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:50:39 [INFO] [stderr] | [INFO] [stderr] 50 | rng.gen_range::(0 as f64,100 as f64) [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:543:23 [INFO] [stderr] | [INFO] [stderr] 543 | let s: f64 = random_percentage!(); [INFO] [stderr] | -------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:697:18 [INFO] [stderr] | [INFO] [stderr] 697 | if percent >= 80 as f64 { [INFO] [stderr] | ^^^^^^^^^ help: try: `f64::from(80)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/profile/profile.rs:726:50 [INFO] [stderr] | [INFO] [stderr] 726 | pub fn levenshtein_distance(&mut self, control: &String, experiment: &String) -> usize { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/profile/profile.rs:726:71 [INFO] [stderr] | [INFO] [stderr] 726 | pub fn levenshtein_distance(&mut self, control: &String, experiment: &String) -> usize { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/profile/profile.rs:751:44 [INFO] [stderr] | [INFO] [stderr] 751 | pub fn realistic_test(&mut self, control: &String, experiment: &String) -> 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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/profile/profile.rs:751:65 [INFO] [stderr] | [INFO] [stderr] 751 | pub fn realistic_test(&mut self, control: &String, experiment: &String) -> 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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:111:8 [INFO] [stderr] | [INFO] [stderr] 111 | (1 as f64 - ((total - diff)/total)) * 100 as f64 [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(1)` [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:752:9 [INFO] [stderr] | [INFO] [stderr] 752 | realistic_test!(control, experiment) [INFO] [stderr] | ------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:111:45 [INFO] [stderr] | [INFO] [stderr] 111 | (1 as f64 - ((total - diff)/total)) * 100 as f64 [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:752:9 [INFO] [stderr] | [INFO] [stderr] 752 | realistic_test!(control, experiment) [INFO] [stderr] | ------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:612:21 [INFO] [stderr] | [INFO] [stderr] 612 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:617:22 [INFO] [stderr] | [INFO] [stderr] 617 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:618:22 [INFO] [stderr] | [INFO] [stderr] 618 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:624:22 [INFO] [stderr] | [INFO] [stderr] 624 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/profile/profile.rs:625:22 [INFO] [stderr] | [INFO] [stderr] 625 | facts.push(value.key.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `value.key` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/profile/profile.rs:697:18 [INFO] [stderr] | [INFO] [stderr] 697 | if percent >= 80 as f64 { [INFO] [stderr] | ^^^^^^^^^ help: try: `f64::from(80)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/profile/profile.rs:726:50 [INFO] [stderr] | [INFO] [stderr] 726 | pub fn levenshtein_distance(&mut self, control: &String, experiment: &String) -> usize { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/profile/profile.rs:726:71 [INFO] [stderr] | [INFO] [stderr] 726 | pub fn levenshtein_distance(&mut self, control: &String, experiment: &String) -> usize { [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/profile/profile.rs:751:44 [INFO] [stderr] | [INFO] [stderr] 751 | pub fn realistic_test(&mut self, control: &String, experiment: &String) -> 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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/profile/profile.rs:751:65 [INFO] [stderr] | [INFO] [stderr] 751 | pub fn realistic_test(&mut self, control: &String, experiment: &String) -> 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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:111:8 [INFO] [stderr] | [INFO] [stderr] 111 | (1 as f64 - ((total - diff)/total)) * 100 as f64 [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(1)` [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:752:9 [INFO] [stderr] | [INFO] [stderr] 752 | realistic_test!(control, experiment) [INFO] [stderr] | ------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/macros.rs:111:45 [INFO] [stderr] | [INFO] [stderr] 111 | (1 as f64 - ((total - diff)/total)) * 100 as f64 [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(100)` [INFO] [stderr] | [INFO] [stderr] ::: src/profile/profile.rs:752:9 [INFO] [stderr] | [INFO] [stderr] 752 | realistic_test!(control, experiment) [INFO] [stderr] | ------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `profile::pattern::Pattern` [INFO] [stderr] --> src/profile/pattern.rs:77:2 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn new() -> Pattern { [INFO] [stderr] | _____^ [INFO] [stderr] 78 | | Pattern{ [INFO] [stderr] 79 | | size: 0, [INFO] [stderr] 80 | | regex_symbols: PatternPlaceholder::new(), [INFO] [stderr] ... | [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 63 | impl Default for profile::pattern::Pattern { [INFO] [stderr] 64 | fn default() -> Self { [INFO] [stderr] 65 | Self::new() [INFO] [stderr] 66 | } [INFO] [stderr] 67 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/profile/pattern.rs:107:34 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn symbolize_char(&self, c: &char) -> char{ [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: statement can be reduced [INFO] [stderr] --> src/profile/pattern.rs:229:4 [INFO] [stderr] | [INFO] [stderr] 229 | &fact.set_next_key(nk.unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fact.set_next_key(nk.unwrap());` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/profile/pattern.rs:234:4 [INFO] [stderr] | [INFO] [stderr] 234 | &fact.set_prior_key(pk.unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fact.set_prior_key(pk.unwrap());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `profile::pattern_placeholder::PatternPlaceholder` [INFO] [stderr] --> src/profile/pattern_placeholder.rs:76:2 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn new() -> PatternPlaceholder { [INFO] [stderr] | _____^ [INFO] [stderr] 77 | | let ph = init(); [INFO] [stderr] 78 | | PatternPlaceholder{ [INFO] [stderr] 79 | | placeholder: ph, [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 39 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/profile/pattern_placeholder.rs:99:4 [INFO] [stderr] | [INFO] [stderr] 99 | *self.placeholder.get(key).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.placeholder[key]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `profile::pattern::Pattern` [INFO] [stderr] --> src/profile/pattern.rs:77:2 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn new() -> Pattern { [INFO] [stderr] | _____^ [INFO] [stderr] 78 | | Pattern{ [INFO] [stderr] 79 | | size: 0, [INFO] [stderr] 80 | | regex_symbols: PatternPlaceholder::new(), [INFO] [stderr] ... | [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 63 | impl Default for profile::pattern::Pattern { [INFO] [stderr] 64 | fn default() -> Self { [INFO] [stderr] 65 | Self::new() [INFO] [stderr] 66 | } [INFO] [stderr] 67 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/profile/pattern.rs:107:34 [INFO] [stderr] | [INFO] [stderr] 107 | pub fn symbolize_char(&self, c: &char) -> char{ [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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] error: Could not compile `test-data-generation`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/profile/pattern.rs:229:4 [INFO] [stderr] | [INFO] [stderr] 229 | &fact.set_next_key(nk.unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fact.set_next_key(nk.unwrap());` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: statement can be reduced [INFO] [stderr] --> src/profile/pattern.rs:234:4 [INFO] [stderr] | [INFO] [stderr] 234 | &fact.set_prior_key(pk.unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `fact.set_prior_key(pk.unwrap());` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `profile::pattern_placeholder::PatternPlaceholder` [INFO] [stderr] --> src/profile/pattern_placeholder.rs:76:2 [INFO] [stderr] | [INFO] [stderr] 76 | pub fn new() -> PatternPlaceholder { [INFO] [stderr] | _____^ [INFO] [stderr] 77 | | let ph = init(); [INFO] [stderr] 78 | | PatternPlaceholder{ [INFO] [stderr] 79 | | placeholder: ph, [INFO] [stderr] 80 | | } [INFO] [stderr] 81 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 39 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/profile/pattern_placeholder.rs:99:4 [INFO] [stderr] | [INFO] [stderr] 99 | *self.placeholder.get(key).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.placeholder[key]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `test-data-generation`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "11e4790f062c2d4ebfb5886ac6a906695475a4e391d633c3e11156dfe3014d7e"` [INFO] running `"docker" "rm" "-f" "11e4790f062c2d4ebfb5886ac6a906695475a4e391d633c3e11156dfe3014d7e"` [INFO] [stdout] 11e4790f062c2d4ebfb5886ac6a906695475a4e391d633c3e11156dfe3014d7e