[INFO] updating cached repository ryanobeirne/cgats [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/ryanobeirne/cgats [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/ryanobeirne/cgats" "work/ex/clippy-test-run/sources/stable/gh/ryanobeirne/cgats"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/ryanobeirne/cgats'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/ryanobeirne/cgats" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ryanobeirne/cgats"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ryanobeirne/cgats'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] afddf6214b9637a0d02eaed94c85280beb0836c9 [INFO] sha for GitHub repo ryanobeirne/cgats: afddf6214b9637a0d02eaed94c85280beb0836c9 [INFO] validating manifest of ryanobeirne/cgats 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 ryanobeirne/cgats 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 ryanobeirne/cgats [INFO] finished frobbing ryanobeirne/cgats [INFO] frobbed toml for ryanobeirne/cgats written to work/ex/clippy-test-run/sources/stable/gh/ryanobeirne/cgats/Cargo.toml [INFO] started frobbing ryanobeirne/cgats [INFO] finished frobbing ryanobeirne/cgats [INFO] frobbed toml for ryanobeirne/cgats written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ryanobeirne/cgats/Cargo.toml [INFO] crate ryanobeirne/cgats has a lockfile. skipping [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 ryanobeirne/cgats against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ryanobeirne/cgats:/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 -Dclippy::into_iter_on_array" "-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] 17b8ac6b28c32261dea3f29e2abdc107403c29831f4ef22385599eea76ecf0d3 [INFO] running `"docker" "start" "-a" "17b8ac6b28c32261dea3f29e2abdc107403c29831f4ef22385599eea76ecf0d3"` [INFO] [stderr] Checking cgats v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/cgatsmap.rs:75:27 [INFO] [stderr] | [INFO] [stderr] 75 | write!(buf, "{}", "CgatsMap{")?; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/cgatsmap.rs:86:27 [INFO] [stderr] | [INFO] [stderr] 86 | write!(buf, "{}", '}')?; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/cgatsmap.rs:75:27 [INFO] [stderr] | [INFO] [stderr] 75 | write!(buf, "{}", "CgatsMap{")?; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/cgatsmap.rs:86:27 [INFO] [stderr] | [INFO] [stderr] 86 | write!(buf, "{}", '}')?; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/compare.rs:189:24 [INFO] [stderr] | [INFO] [stderr] 189 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 190 | | if !cgm.inner.contains_key(&key) { [INFO] [stderr] 191 | | cgm.inner.insert(key, value.clone()); [INFO] [stderr] 192 | | } [INFO] [stderr] 193 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 189 | } else if !cgm.inner.contains_key(&key) { [INFO] [stderr] 190 | cgm.inner.insert(key, value.clone()); [INFO] [stderr] 191 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/compare.rs:187:58 [INFO] [stderr] | [INFO] [stderr] 187 | let float = current + &value.float / *&self.len() as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try this: `self.len()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/compare.rs:189:24 [INFO] [stderr] | [INFO] [stderr] 189 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 190 | | if !cgm.inner.contains_key(&key) { [INFO] [stderr] 191 | | cgm.inner.insert(key, value.clone()); [INFO] [stderr] 192 | | } [INFO] [stderr] 193 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 189 | } else if !cgm.inner.contains_key(&key) { [INFO] [stderr] 190 | cgm.inner.insert(key, value.clone()); [INFO] [stderr] 191 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/compare.rs:187:58 [INFO] [stderr] | [INFO] [stderr] 187 | let float = current + &value.float / *&self.len() as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try this: `self.len()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: item `rawvec::RawVec` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/rawvec.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | / impl RawVec { [INFO] [stderr] 14 | | pub fn new() -> Self { [INFO] [stderr] 15 | | Self { inner: DataSet::new() } [INFO] [stderr] 16 | | } [INFO] [stderr] ... | [INFO] [stderr] 205 | | } [INFO] [stderr] 206 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `rawvec::RawVec` [INFO] [stderr] --> src/rawvec.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | Self { inner: DataSet::new() } [INFO] [stderr] 16 | | } [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] 9 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rawvec.rs:61:39 [INFO] [stderr] | [INFO] [stderr] 61 | let cr_split = text.split("\r"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\r'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rawvec.rs:73:46 [INFO] [stderr] | [INFO] [stderr] 73 | let split = split_line.split("\t"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\t'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/rawvec.rs:162:12 [INFO] [stderr] | [INFO] [stderr] 162 | if data_format.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `data_format.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `cgatsmap::CgatsMap` [INFO] [stderr] --> src/cgatsmap.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | Self { inner: DataMap::new() } [INFO] [stderr] 16 | | } [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] 9 | #[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/cgatsmap.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | / self.inner.get( [INFO] [stderr] 51 | | &(*index, *format) [INFO] [stderr] 52 | | ).unwrap() [INFO] [stderr] | |______________________________^ help: try this: `&self.inner[&(*index, *format)]` [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: item `compare::CgatsVec` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/compare.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / impl CgatsVec { [INFO] [stderr] 12 | | pub fn new() -> Self { [INFO] [stderr] 13 | | Self { inner: CgatsSet::new() } [INFO] [stderr] 14 | | } [INFO] [stderr] ... | [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `compare::CgatsVec` [INFO] [stderr] --> src/compare.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn new() -> Self { [INFO] [stderr] 13 | | Self { inner: CgatsSet::new() } [INFO] [stderr] 14 | | } [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] 7 | #[derive(Default)] [INFO] [stderr] | [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/compare.rs:28:49 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn from_files>(file_vec: &Vec) -> CgatsResult { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [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: item `rawvec::RawVec` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/rawvec.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | / impl RawVec { [INFO] [stderr] 14 | | pub fn new() -> Self { [INFO] [stderr] 15 | | Self { inner: DataSet::new() } [INFO] [stderr] 16 | | } [INFO] [stderr] ... | [INFO] [stderr] 205 | | } [INFO] [stderr] 206 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `rawvec::RawVec` [INFO] [stderr] --> src/rawvec.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | Self { inner: DataSet::new() } [INFO] [stderr] 16 | | } [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] 9 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rawvec.rs:61:39 [INFO] [stderr] | [INFO] [stderr] 61 | let cr_split = text.split("\r"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\r'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rawvec.rs:73:46 [INFO] [stderr] | [INFO] [stderr] 73 | let split = split_line.split("\t"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\t'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: item `compare::MapVec` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/compare.rs:159:1 [INFO] [stderr] | [INFO] [stderr] 159 | / impl MapVec { [INFO] [stderr] 160 | | pub fn new() -> Self { [INFO] [stderr] 161 | | Self { inner: Vec::new() } [INFO] [stderr] 162 | | } [INFO] [stderr] ... | [INFO] [stderr] 198 | | } [INFO] [stderr] 199 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `compare::MapVec` [INFO] [stderr] --> src/compare.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | / pub fn new() -> Self { [INFO] [stderr] 161 | | Self { inner: Vec::new() } [INFO] [stderr] 162 | | } [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] 155 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/rawvec.rs:162:12 [INFO] [stderr] | [INFO] [stderr] 162 | if data_format.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `data_format.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/compare.rs:187:43 [INFO] [stderr] | [INFO] [stderr] 187 | let float = current + &value.float / *&self.len() as f64; [INFO] [stderr] | ------------^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `value.float` [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `cgatsmap::CgatsMap` [INFO] [stderr] --> src/cgatsmap.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | Self { inner: DataMap::new() } [INFO] [stderr] 16 | | } [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] 9 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [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: usage of `contains_key` followed by `insert` on a `BTreeMap` [INFO] [stderr] --> src/compare.rs:190:21 [INFO] [stderr] | [INFO] [stderr] 190 | / if !cgm.inner.contains_key(&key) { [INFO] [stderr] 191 | | cgm.inner.insert(key, value.clone()); [INFO] [stderr] 192 | | } [INFO] [stderr] | |_____________________^ help: consider using: `cgm.inner.entry(key).or_insert(value.clone())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/cgatsmap.rs:50:21 [INFO] [stderr] | [INFO] [stderr] 50 | / self.inner.get( [INFO] [stderr] 51 | | &(*index, *format) [INFO] [stderr] 52 | | ).unwrap() [INFO] [stderr] | |______________________________^ help: try this: `&self.inner[&(*index, *format)]` [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: item `compare::CgatsVec` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/compare.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / impl CgatsVec { [INFO] [stderr] 12 | | pub fn new() -> Self { [INFO] [stderr] 13 | | Self { inner: CgatsSet::new() } [INFO] [stderr] 14 | | } [INFO] [stderr] ... | [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `compare::CgatsVec` [INFO] [stderr] --> src/compare.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn new() -> Self { [INFO] [stderr] 13 | | Self { inner: CgatsSet::new() } [INFO] [stderr] 14 | | } [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] 7 | #[derive(Default)] [INFO] [stderr] | [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/compare.rs:28:49 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn from_files>(file_vec: &Vec) -> CgatsResult { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [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: item `compare::MapVec` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/compare.rs:159:1 [INFO] [stderr] | [INFO] [stderr] 159 | / impl MapVec { [INFO] [stderr] 160 | | pub fn new() -> Self { [INFO] [stderr] 161 | | Self { inner: Vec::new() } [INFO] [stderr] 162 | | } [INFO] [stderr] ... | [INFO] [stderr] 198 | | } [INFO] [stderr] 199 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `compare::MapVec` [INFO] [stderr] --> src/compare.rs:160:5 [INFO] [stderr] | [INFO] [stderr] 160 | / pub fn new() -> Self { [INFO] [stderr] 161 | | Self { inner: Vec::new() } [INFO] [stderr] 162 | | } [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] 155 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: needlessly taken reference of left operand [INFO] [stderr] --> src/compare.rs:187:43 [INFO] [stderr] | [INFO] [stderr] 187 | let float = current + &value.float / *&self.len() as f64; [INFO] [stderr] | ------------^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: use the left value directly: `value.float` [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: usage of `contains_key` followed by `insert` on a `BTreeMap` [INFO] [stderr] --> src/compare.rs:190:21 [INFO] [stderr] | [INFO] [stderr] 190 | / if !cgm.inner.contains_key(&key) { [INFO] [stderr] 191 | | cgm.inner.insert(key, value.clone()); [INFO] [stderr] 192 | | } [INFO] [stderr] | |_____________________^ help: consider using: `cgm.inner.entry(key).or_insert(value.clone())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/format.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn display(&self) -> String { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/format.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn is_float(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/format.rs:48:20 [INFO] [stderr] | [INFO] [stderr] 48 | pub fn display(&self) -> String { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/format.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn is_float(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/tests.rs:143:23 [INFO] [stderr] | [INFO] [stderr] 143 | Some(m) => Ok(println!("{:?}", m)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [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: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/tests.rs:168:15 [INFO] [stderr] | [INFO] [stderr] 168 | let val = cgm.inner.get(&(0,DataFormatType::SAMPLE_NAME)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&cgm.inner[&(0,DataFormatType::SAMPLE_NAME)]` [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: item `CgatsObject` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/lib.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | / impl CgatsObject { [INFO] [stderr] 35 | | pub fn new() -> Self { [INFO] [stderr] 36 | | Self { [INFO] [stderr] 37 | | raw_vec: RawVec::new(), [INFO] [stderr] ... | [INFO] [stderr] 216 | | [INFO] [stderr] 217 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] warning: item `CgatsObject` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/lib.rs:34:1 [INFO] [stderr] | [INFO] [stderr] 34 | / impl CgatsObject { [INFO] [stderr] 35 | | pub fn new() -> Self { [INFO] [stderr] 36 | | Self { [INFO] [stderr] 37 | | raw_vec: RawVec::new(), [INFO] [stderr] ... | [INFO] [stderr] 216 | | [INFO] [stderr] 217 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `CgatsObject` [INFO] [stderr] --> src/lib.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / pub fn new() -> Self { [INFO] [stderr] 36 | | Self { [INFO] [stderr] 37 | | raw_vec: RawVec::new(), [INFO] [stderr] 38 | | cgats_type: None, [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [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] 34 | impl Default for CgatsObject { [INFO] [stderr] 35 | fn default() -> Self { [INFO] [stderr] 36 | Self::new() [INFO] [stderr] 37 | } [INFO] [stderr] 38 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:130:12 [INFO] [stderr] | [INFO] [stderr] 130 | if self.data_format.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.data_format.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `CgatsObject` [INFO] [stderr] --> src/lib.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | / pub fn new() -> Self { [INFO] [stderr] 36 | | Self { [INFO] [stderr] 37 | | raw_vec: RawVec::new(), [INFO] [stderr] 38 | | cgats_type: None, [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [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] 34 | impl Default for CgatsObject { [INFO] [stderr] 35 | fn default() -> Self { [INFO] [stderr] 36 | Self::new() [INFO] [stderr] 37 | } [INFO] [stderr] 38 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:194:13 [INFO] [stderr] | [INFO] [stderr] 194 | cgt.to_owned() == CgatsType::ColorBurst [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `cgt` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:130:12 [INFO] [stderr] | [INFO] [stderr] 130 | if self.data_format.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.data_format.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:194:13 [INFO] [stderr] | [INFO] [stderr] 194 | cgt.to_owned() == CgatsType::ColorBurst [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `cgt` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/config.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | format!("{}", s) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.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: length comparison to one [INFO] [stderr] --> src/main.rs:16:8 [INFO] [stderr] | [INFO] [stderr] 16 | if config.files.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `config.files.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/config.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | format!("{}", s) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `s.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: length comparison to one [INFO] [stderr] --> src/main.rs:16:8 [INFO] [stderr] | [INFO] [stderr] 16 | if config.files.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `config.files.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.55s [INFO] running `"docker" "inspect" "17b8ac6b28c32261dea3f29e2abdc107403c29831f4ef22385599eea76ecf0d3"` [INFO] running `"docker" "rm" "-f" "17b8ac6b28c32261dea3f29e2abdc107403c29831f4ef22385599eea76ecf0d3"` [INFO] [stdout] 17b8ac6b28c32261dea3f29e2abdc107403c29831f4ef22385599eea76ecf0d3