[INFO] crate rust_fixed_width 1.0.1 is already in cache [INFO] extracting crate rust_fixed_width 1.0.1 into work/ex/clippy-test-run/sources/stable/reg/rust_fixed_width/1.0.1 [INFO] extracting crate rust_fixed_width 1.0.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rust_fixed_width/1.0.1 [INFO] validating manifest of rust_fixed_width-1.0.1 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 rust_fixed_width-1.0.1 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 rust_fixed_width-1.0.1 [INFO] finished frobbing rust_fixed_width-1.0.1 [INFO] frobbed toml for rust_fixed_width-1.0.1 written to work/ex/clippy-test-run/sources/stable/reg/rust_fixed_width/1.0.1/Cargo.toml [INFO] started frobbing rust_fixed_width-1.0.1 [INFO] finished frobbing rust_fixed_width-1.0.1 [INFO] frobbed toml for rust_fixed_width-1.0.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rust_fixed_width/1.0.1/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 rust_fixed_width-1.0.1 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-1/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/reg/rust_fixed_width/1.0.1:/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] f270a558fbb083d430efa1af3b6e23237fba7ad67295f3bc5838f45fb7c7045a [INFO] running `"docker" "start" "-a" "f270a558fbb083d430efa1af3b6e23237fba7ad67295f3bc5838f45fb7c7045a"` [INFO] [stderr] Checking rust_fixed_width v1.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spec.rs:247:13 [INFO] [stderr] | [INFO] [stderr] 247 | field_specs: field_specs [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `field_specs` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spec.rs:280:13 [INFO] [stderr] | [INFO] [stderr] 280 | field_specs: field_specs [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `field_specs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/record/recognizers.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/record/recognizers.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | line: line [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spec.rs:247:13 [INFO] [stderr] | [INFO] [stderr] 247 | field_specs: field_specs [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `field_specs` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/spec.rs:280:13 [INFO] [stderr] | [INFO] [stderr] 280 | field_specs: field_specs [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `field_specs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/record/recognizers.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | reader: reader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reader` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/record/recognizers.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | line: line [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `spec::SpecBuilder` [INFO] [stderr] --> src/spec.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> Self { [INFO] [stderr] 28 | | SpecBuilder { [INFO] [stderr] 29 | | record_specs: HashMap::new() [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [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] 22 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `spec::RecordSpec` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/spec.rs:53:1 [INFO] [stderr] | [INFO] [stderr] 53 | / impl RecordSpec { [INFO] [stderr] 54 | | pub fn field_range(&self, name: &String) -> Option> { [INFO] [stderr] 55 | | let mut found_field_spec = None; [INFO] [stderr] 56 | | let index = self.field_specs.iter().take_while(|&(field_name, field_spec)| { [INFO] [stderr] ... | [INFO] [stderr] 68 | | } [INFO] [stderr] 69 | | } [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/spec.rs:54:37 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn field_range(&self, name: &String) -> Option> { [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: you should consider deriving a `Default` implementation for `spec::RecordSpecBuilder` [INFO] [stderr] --> src/spec.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn new() -> Self { [INFO] [stderr] 85 | | RecordSpecBuilder { [INFO] [stderr] 86 | | line_ending: "".to_string(), [INFO] [stderr] 87 | | field_specs: BTreeMap::new() [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [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] 78 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `spec::FieldSpecBuilder` [INFO] [stderr] --> src/spec.rs:142:5 [INFO] [stderr] | [INFO] [stderr] 142 | / pub fn new() -> Self { [INFO] [stderr] 143 | | FieldSpecBuilder { [INFO] [stderr] 144 | | length: None, [INFO] [stderr] 145 | | padding_direction: None, [INFO] [stderr] ... | [INFO] [stderr] 149 | | } [INFO] [stderr] 150 | | } [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] 133 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/record/reader.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | |name| Ok(name) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Ok` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/record/reader.rs:87:12 [INFO] [stderr] | [INFO] [stderr] 87 | if ending.len() != 0 && ending != record_spec.line_ending { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ending.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 `record::reader::ReaderBuilder` [INFO] [stderr] --> src/record/reader.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | / pub fn new() -> ReaderBuilder { [INFO] [stderr] 106 | | ReaderBuilder { [INFO] [stderr] 107 | | un_padder: Some(IdentityPadder), [INFO] [stderr] 108 | | recognizer: Some(NoneRecognizer), [INFO] [stderr] 109 | | specs: None [INFO] [stderr] 110 | | } [INFO] [stderr] 111 | | } [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] 98 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/record/writer.rs:44:17 [INFO] [stderr] | [INFO] [stderr] 44 | |name| Ok(name) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Ok` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/record/writer.rs:53:77 [INFO] [stderr] | [INFO] [stderr] 53 | self._write_field(writer, field_spec, data.get(name).or_else(|| field_spec.default.as_ref().clone()).ok_or_else(|| Error::FieldValueRequired(record_name.clone(), name.clone()))?.clone())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `field_spec.default.as_ref()` [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: passing a unit value to a function [INFO] [stderr] --> src/record/writer.rs:67:12 [INFO] [stderr] | [INFO] [stderr] 67 | Ok(writer.write_all(value.as_bytes())?) [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] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 67 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/record/writer.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | writer.write(&record_spec.line_ending.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `record::writer::WriterBuilder` [INFO] [stderr] --> src/record/writer.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / pub fn new() -> WriterBuilder { [INFO] [stderr] 84 | | WriterBuilder { [INFO] [stderr] 85 | | padder: Some(IdentityPadder), [INFO] [stderr] 86 | | recognizer: Some(NoneRecognizer), [INFO] [stderr] 87 | | specs: None [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [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] 76 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `record::recognizers::IdFieldRecognizer` [INFO] [stderr] --> src/record/recognizers.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | / pub fn new() -> Self { [INFO] [stderr] 136 | | Self::new_with_field("$id") [INFO] [stderr] 137 | | } [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] 130 | #[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/padders.rs:52:57 [INFO] [stderr] | [INFO] [stderr] 52 | fn pad(&self, data: String, length: usize, padding: &String, direction: PaddingDirection) -> 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/padders.rs:62:44 [INFO] [stderr] | [INFO] [stderr] 62 | fn unpad(&self, data: String, padding: &String, direction: PaddingDirection) -> 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/padders.rs:105:26 [INFO] [stderr] | [INFO] [stderr] 105 | fn get_char(padding: &String) -> ::std::result::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: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rust_fixed_width`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/test.rs:9:27 [INFO] [stderr] | [INFO] [stderr] 9 | line_recognize_calls: Vec<(&'a HashMap, Result)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/test.rs:10:27 [INFO] [stderr] | [INFO] [stderr] 10 | data_recognize_calls: Vec<(&'a HashMap, &'a HashMap, Result)> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `test::MockRecognizer<'a>` [INFO] [stderr] --> src/test.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | MockRecognizer { [INFO] [stderr] 16 | | data_recognize_calls: Vec::new(), [INFO] [stderr] 17 | | line_recognize_calls: Vec::new() [INFO] [stderr] 18 | | } [INFO] [stderr] 19 | | } [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] 8 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/test.rs:61:16 [INFO] [stderr] | [INFO] [stderr] 61 | pad_calls: Vec<(String, usize, String, PaddingDirection, Result)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `test::MockPadder` [INFO] [stderr] --> src/test.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | / pub fn new() -> Self { [INFO] [stderr] 67 | | MockPadder { [INFO] [stderr] 68 | | pad_calls: Vec::new(), [INFO] [stderr] 69 | | unpad_calls: Vec::new() [INFO] [stderr] 70 | | } [INFO] [stderr] 71 | | } [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] 60 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `spec::SpecBuilder` [INFO] [stderr] --> src/spec.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / pub fn new() -> Self { [INFO] [stderr] 28 | | SpecBuilder { [INFO] [stderr] 29 | | record_specs: HashMap::new() [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [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] 22 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `spec::RecordSpec` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/spec.rs:53:1 [INFO] [stderr] | [INFO] [stderr] 53 | / impl RecordSpec { [INFO] [stderr] 54 | | pub fn field_range(&self, name: &String) -> Option> { [INFO] [stderr] 55 | | let mut found_field_spec = None; [INFO] [stderr] 56 | | let index = self.field_specs.iter().take_while(|&(field_name, field_spec)| { [INFO] [stderr] ... | [INFO] [stderr] 68 | | } [INFO] [stderr] 69 | | } [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/spec.rs:54:37 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn field_range(&self, name: &String) -> Option> { [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: you should consider deriving a `Default` implementation for `spec::RecordSpecBuilder` [INFO] [stderr] --> src/spec.rs:84:5 [INFO] [stderr] | [INFO] [stderr] 84 | / pub fn new() -> Self { [INFO] [stderr] 85 | | RecordSpecBuilder { [INFO] [stderr] 86 | | line_ending: "".to_string(), [INFO] [stderr] 87 | | field_specs: BTreeMap::new() [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [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] 78 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `spec::FieldSpecBuilder` [INFO] [stderr] --> src/spec.rs:142:5 [INFO] [stderr] | [INFO] [stderr] 142 | / pub fn new() -> Self { [INFO] [stderr] 143 | | FieldSpecBuilder { [INFO] [stderr] 144 | | length: None, [INFO] [stderr] 145 | | padding_direction: None, [INFO] [stderr] ... | [INFO] [stderr] 149 | | } [INFO] [stderr] 150 | | } [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] 133 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/spec.rs:306:27 [INFO] [stderr] | [INFO] [stderr] 306 | let record_spec = spec.record_specs.get("record1").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&spec.record_specs["record1"]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/spec.rs:316:24 [INFO] [stderr] | [INFO] [stderr] 316 | assert_eq!(45, spec.record_specs.get("record1").unwrap().len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&spec.record_specs["record1"]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/spec.rs:317:24 [INFO] [stderr] | [INFO] [stderr] 317 | assert_eq!(42, spec.record_specs.get("record2").unwrap().len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&spec.record_specs["record2"]` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/spec.rs:318:23 [INFO] [stderr] | [INFO] [stderr] 318 | assert_eq!(0, spec.record_specs.get("record3").unwrap().len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&spec.record_specs["record3"]` [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: redundant closure found [INFO] [stderr] --> src/record/reader.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | |name| Ok(name) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Ok` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/record/reader.rs:87:12 [INFO] [stderr] | [INFO] [stderr] 87 | if ending.len() != 0 && ending != record_spec.line_ending { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ending.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 `record::reader::ReaderBuilder` [INFO] [stderr] --> src/record/reader.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | / pub fn new() -> ReaderBuilder { [INFO] [stderr] 106 | | ReaderBuilder { [INFO] [stderr] 107 | | un_padder: Some(IdentityPadder), [INFO] [stderr] 108 | | recognizer: Some(NoneRecognizer), [INFO] [stderr] 109 | | specs: None [INFO] [stderr] 110 | | } [INFO] [stderr] 111 | | } [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] 98 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/record/writer.rs:44:17 [INFO] [stderr] | [INFO] [stderr] 44 | |name| Ok(name) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Ok` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/record/writer.rs:53:77 [INFO] [stderr] | [INFO] [stderr] 53 | self._write_field(writer, field_spec, data.get(name).or_else(|| field_spec.default.as_ref().clone()).ok_or_else(|| Error::FieldValueRequired(record_name.clone(), name.clone()))?.clone())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `field_spec.default.as_ref()` [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: passing a unit value to a function [INFO] [stderr] --> src/record/writer.rs:67:12 [INFO] [stderr] | [INFO] [stderr] 67 | Ok(writer.write_all(value.as_bytes())?) [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] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 67 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/record/writer.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | writer.write(&record_spec.line_ending.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `record::writer::WriterBuilder` [INFO] [stderr] --> src/record/writer.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / pub fn new() -> WriterBuilder { [INFO] [stderr] 84 | | WriterBuilder { [INFO] [stderr] 85 | | padder: Some(IdentityPadder), [INFO] [stderr] 86 | | recognizer: Some(NoneRecognizer), [INFO] [stderr] 87 | | specs: None [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [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] 76 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `record::recognizers::IdFieldRecognizer` [INFO] [stderr] --> src/record/recognizers.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | / pub fn new() -> Self { [INFO] [stderr] 136 | | Self::new_with_field("$id") [INFO] [stderr] 137 | | } [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] 130 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/record/recognizers.rs:219:5 [INFO] [stderr] | [INFO] [stderr] 219 | / fn id_spec_recognizer() { [INFO] [stderr] 220 | | let specs = SpecBuilder::new() [INFO] [stderr] 221 | | .with_record( [INFO] [stderr] 222 | | "record1", [INFO] [stderr] ... | [INFO] [stderr] 325 | | assert_result!(Ok("record1".to_string()), recognizer_with_field.recognize_for_line(LineBuffer::new(&mut "foodsfsdfd".as_bytes(), &mut String::new()), &specs)); [INFO] [stderr] 326 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:319:106 [INFO] [stderr] | [INFO] [stderr] 319 | assert_result!(Err(Error::CouldNotRecognize), recognizer.recognize_for_line(LineBuffer::new(&mut "dsfdsfsdfd".as_bytes(), &mut String::new()), &specs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"dsfdsfsdfd"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:320:117 [INFO] [stderr] | [INFO] [stderr] 320 | assert_result!(Err(Error::CouldNotRecognize), recognizer_with_field.recognize_for_line(LineBuffer::new(&mut "dsfdsfsdfd".as_bytes(), &mut String::new()), &specs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"dsfdsfsdfd"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:321:117 [INFO] [stderr] | [INFO] [stderr] 321 | assert_result!(Err(Error::CouldNotRecognize), recognizer_with_field.recognize_for_line(LineBuffer::new(&mut "ba".as_bytes(), &mut String::new()), &specs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"ba"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:322:102 [INFO] [stderr] | [INFO] [stderr] 322 | assert_result!(Ok("record2".to_string()), recognizer.recognize_for_line(LineBuffer::new(&mut "barasdasdd".as_bytes(), &mut String::new()), &specs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"barasdasdd"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:323:113 [INFO] [stderr] | [INFO] [stderr] 323 | assert_result!(Ok("record3".to_string()), recognizer_with_field.recognize_for_line(LineBuffer::new(&mut "barasdasdd".as_bytes(), &mut String::new()), &specs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"barasdasdd"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:324:102 [INFO] [stderr] | [INFO] [stderr] 324 | assert_result!(Ok("record4".to_string()), recognizer.recognize_for_line(LineBuffer::new(&mut "foodsfsdfd".as_bytes(), &mut String::new()), &specs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"foodsfsdfd"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:325:113 [INFO] [stderr] | [INFO] [stderr] 325 | assert_result!(Ok("record1".to_string()), recognizer_with_field.recognize_for_line(LineBuffer::new(&mut "foodsfsdfd".as_bytes(), &mut String::new()), &specs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"foodsfsdfd"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:341:27 [INFO] [stderr] | [INFO] [stderr] 341 | let reader = &mut "dsfdsfsdfd".as_bytes(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"dsfdsfsdfd"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/record/recognizers.rs:351:25 [INFO] [stderr] | [INFO] [stderr] 351 | assert_eq!(&mut "sdfd".as_bytes(), buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"sdfd"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/padders.rs:52:57 [INFO] [stderr] | [INFO] [stderr] 52 | fn pad(&self, data: String, length: usize, padding: &String, direction: PaddingDirection) -> 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/padders.rs:62:44 [INFO] [stderr] | [INFO] [stderr] 62 | fn unpad(&self, data: String, padding: &String, direction: PaddingDirection) -> 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/padders.rs:105:26 [INFO] [stderr] | [INFO] [stderr] 105 | fn get_char(padding: &String) -> ::std::result::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: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rust_fixed_width`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "f270a558fbb083d430efa1af3b6e23237fba7ad67295f3bc5838f45fb7c7045a"` [INFO] running `"docker" "rm" "-f" "f270a558fbb083d430efa1af3b6e23237fba7ad67295f3bc5838f45fb7c7045a"` [INFO] [stdout] f270a558fbb083d430efa1af3b6e23237fba7ad67295f3bc5838f45fb7c7045a