[INFO] updating cached repository hansihe/rust_iterative_json_parser [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/hansihe/rust_iterative_json_parser [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/hansihe/rust_iterative_json_parser" "work/ex/clippy-test-run/sources/stable/gh/hansihe/rust_iterative_json_parser"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/hansihe/rust_iterative_json_parser'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/hansihe/rust_iterative_json_parser" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hansihe/rust_iterative_json_parser"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hansihe/rust_iterative_json_parser'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 3f0ffa48024c44cdc26d65118cdc1114ca8900bd [INFO] sha for GitHub repo hansihe/rust_iterative_json_parser: 3f0ffa48024c44cdc26d65118cdc1114ca8900bd [INFO] validating manifest of hansihe/rust_iterative_json_parser 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 hansihe/rust_iterative_json_parser 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 hansihe/rust_iterative_json_parser [INFO] finished frobbing hansihe/rust_iterative_json_parser [INFO] frobbed toml for hansihe/rust_iterative_json_parser written to work/ex/clippy-test-run/sources/stable/gh/hansihe/rust_iterative_json_parser/Cargo.toml [INFO] started frobbing hansihe/rust_iterative_json_parser [INFO] finished frobbing hansihe/rust_iterative_json_parser [INFO] frobbed toml for hansihe/rust_iterative_json_parser written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hansihe/rust_iterative_json_parser/Cargo.toml [INFO] crate hansihe/rust_iterative_json_parser 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 hansihe/rust_iterative_json_parser 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-3/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/hansihe/rust_iterative_json_parser:/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] 4c38ced6975a24c113da112a7ab7e5215ea88de3c0232fa32a2c1e0683525761 [INFO] running `"docker" "start" "-a" "4c38ced6975a24c113da112a7ab7e5215ea88de3c0232fa32a2c1e0683525761"` [INFO] [stderr] warning: unused manifest key: lib.src [INFO] [stderr] Checking iterative_json_parser v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sink/into_enum.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/source/string.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | vec: vec, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `vec` [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/source/string.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | vec: vec, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `vec` [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/sink/into_enum.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/source/string.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | vec: vec, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `vec` [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/source/string.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | vec: vec, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `vec` [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: unused macro definition [INFO] [stderr] --> src/parser.rs:110:1 [INFO] [stderr] | [INFO] [stderr] 110 | / macro_rules! lift_bail { [INFO] [stderr] 111 | | ($bailing:expr) => { [INFO] [stderr] 112 | | match $bailing { [INFO] [stderr] 113 | | Ok(inner) => Ok(inner), [INFO] [stderr] ... | [INFO] [stderr] 116 | | }; [INFO] [stderr] 117 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:93:39 [INFO] [stderr] | [INFO] [stderr] 93 | PeekResult::Bail(bail) => return Err(ParseError::SourceBail(bail)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ParseError::SourceBail(bail))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:94:32 [INFO] [stderr] | [INFO] [stderr] 94 | PeekResult::Eof => return Err(ParseError::Eof), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ParseError::Eof)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `::PResult` [INFO] [stderr] --> src/source/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use ::PResult; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/parser.rs:110:1 [INFO] [stderr] | [INFO] [stderr] 110 | / macro_rules! lift_bail { [INFO] [stderr] 111 | | ($bailing:expr) => { [INFO] [stderr] 112 | | match $bailing { [INFO] [stderr] 113 | | Ok(inner) => Ok(inner), [INFO] [stderr] ... | [INFO] [stderr] 116 | | }; [INFO] [stderr] 117 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:93:39 [INFO] [stderr] | [INFO] [stderr] 93 | PeekResult::Bail(bail) => return Err(ParseError::SourceBail(bail)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ParseError::SourceBail(bail))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:94:32 [INFO] [stderr] | [INFO] [stderr] 94 | PeekResult::Eof => return Err(ParseError::Eof), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ParseError::Eof)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `::PResult` [INFO] [stderr] --> src/source/mod.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use ::PResult; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/parser.rs:136:14 [INFO] [stderr] | [INFO] [stderr] 136 | fn log_token(token: &str) { [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/parser.rs:136:14 [INFO] [stderr] | [INFO] [stderr] 136 | fn log_token(token: &str) { [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Decoder` [INFO] [stderr] --> src/decoder.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | struct Decoder { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/decoder.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | fn new() -> Self { [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/parser.rs:83:24 [INFO] [stderr] | [INFO] [stderr] 83 | fn string_position(&self) -> StringPosition { [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: you should consider adding a `Default` implementation for `parser::ParserState` [INFO] [stderr] --> src/parser.rs:143:5 [INFO] [stderr] | [INFO] [stderr] 143 | / pub fn new() -> Self { [INFO] [stderr] 144 | | ParserState { [INFO] [stderr] 145 | | stack: vec![], [INFO] [stderr] 146 | | [INFO] [stderr] ... | [INFO] [stderr] 154 | | } [INFO] [stderr] 155 | | } [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] 141 | impl Default for parser::ParserState { [INFO] [stderr] 142 | fn default() -> Self { [INFO] [stderr] 143 | Self::new() [INFO] [stderr] 144 | } [INFO] [stderr] 145 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:272:12 [INFO] [stderr] | [INFO] [stderr] 272 | if self.stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: length comparison to zero [INFO] [stderr] --> src/parser.rs:317:12 [INFO] [stderr] | [INFO] [stderr] 317 | if self.stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: length comparison to zero [INFO] [stderr] --> src/parser.rs:490:12 [INFO] [stderr] | [INFO] [stderr] 490 | if self.stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: length comparison to zero [INFO] [stderr] --> src/parser.rs:506:12 [INFO] [stderr] | [INFO] [stderr] 506 | if self.stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: length comparison to zero [INFO] [stderr] --> src/parser.rs:585:41 [INFO] [stderr] | [INFO] [stderr] 585 | self.state == TopState::None && self.stack.len() == 0 && !self.read_value && self.started [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: you should consider adding a `Default` implementation for `tokenizer::TokenizerState` [INFO] [stderr] --> src/tokenizer.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / pub fn new() -> TokenizerState { [INFO] [stderr] 51 | | TokenizerState { [INFO] [stderr] 52 | | state: TokenState::None, [INFO] [stderr] 53 | | parser: ParserState::new(), [INFO] [stderr] ... | [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 49 | impl Default for tokenizer::TokenizerState { [INFO] [stderr] 50 | fn default() -> Self { [INFO] [stderr] 51 | Self::new() [INFO] [stderr] 52 | } [INFO] [stderr] 53 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/tokenizer.rs:164:32 [INFO] [stderr] | [INFO] [stderr] 164 | if !(range.start == range.end) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `range.start != range.end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/tokenizer.rs:177:32 [INFO] [stderr] | [INFO] [stderr] 177 | if !(range.start == range.end) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `range.start != range.end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:272:54 [INFO] [stderr] | [INFO] [stderr] 272 | b'A'...b'F' => *codepoint |= (byte - b'A' + 10) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte - b'A' + 10)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:273:54 [INFO] [stderr] | [INFO] [stderr] 273 | b'a'...b'f' => *codepoint |= (byte - b'a' + 10) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte - b'a' + 10)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:274:54 [INFO] [stderr] | [INFO] [stderr] 274 | b'0'...b'9' => *codepoint |= (byte - b'0') as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte - b'0')` [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: struct is never constructed: `Decoder` [INFO] [stderr] --> src/decoder.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | struct Decoder { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/decoder.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `sink::debug_print::PrintSink` [INFO] [stderr] --> src/sink/debug_print.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | / pub fn new() -> PrintSink { [INFO] [stderr] 9 | | PrintSink {} [INFO] [stderr] 10 | | } [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] 5 | #[derive(Default)] [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/parser.rs:83:24 [INFO] [stderr] | [INFO] [stderr] 83 | fn string_position(&self) -> StringPosition { [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/sink/into_enum.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / fn range_to_str<'b>(&'b mut self, range: Range) -> &'b str { [INFO] [stderr] 45 | | let raw = &self.source[(range.start)..(range.end)]; [INFO] [stderr] 46 | | ::std::str::from_utf8(raw).unwrap() [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/sink/into_enum.rs:49:22 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn to_result(mut self) -> Json { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `parser::ParserState` [INFO] [stderr] --> src/parser.rs:143:5 [INFO] [stderr] | [INFO] [stderr] 143 | / pub fn new() -> Self { [INFO] [stderr] 144 | | ParserState { [INFO] [stderr] 145 | | stack: vec![], [INFO] [stderr] 146 | | [INFO] [stderr] ... | [INFO] [stderr] 154 | | } [INFO] [stderr] 155 | | } [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] 141 | impl Default for parser::ParserState { [INFO] [stderr] 142 | fn default() -> Self { [INFO] [stderr] 143 | Self::new() [INFO] [stderr] 144 | } [INFO] [stderr] 145 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:272:12 [INFO] [stderr] | [INFO] [stderr] 272 | if self.stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: length comparison to zero [INFO] [stderr] --> src/parser.rs:317:12 [INFO] [stderr] | [INFO] [stderr] 317 | if self.stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sink/into_enum.rs:220:9 [INFO] [stderr] | [INFO] [stderr] 220 | / match self.stack.last_mut().unwrap() { [INFO] [stderr] 221 | | &mut Json::Object(ref mut obj) => { [INFO] [stderr] 222 | | obj.push((key, value)); [INFO] [stderr] 223 | | } [INFO] [stderr] 224 | | _ => unreachable!(), [INFO] [stderr] 225 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 220 | match *self.stack.last_mut().unwrap() { [INFO] [stderr] 221 | Json::Object(ref mut obj) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sink/into_enum.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | / match self.stack.last_mut().unwrap() { [INFO] [stderr] 231 | | &mut Json::Array(ref mut arr) => { [INFO] [stderr] 232 | | arr.push(value); [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | _ => unreachable!(), [INFO] [stderr] 235 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 230 | match *self.stack.last_mut().unwrap() { [INFO] [stderr] 231 | Json::Array(ref mut arr) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:490:12 [INFO] [stderr] | [INFO] [stderr] 490 | if self.stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: length comparison to zero [INFO] [stderr] --> src/parser.rs:506:12 [INFO] [stderr] | [INFO] [stderr] 506 | if self.stack.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: length comparison to zero [INFO] [stderr] --> src/parser.rs:585:41 [INFO] [stderr] | [INFO] [stderr] 585 | self.state == TopState::None && self.stack.len() == 0 && !self.read_value && self.started [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.stack.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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/input.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | / fn peek_slice<'a>(&'a self, length: usize) -> Option<&'a [u8]> { [INFO] [stderr] 86 | | self.source.peek_slice(length) [INFO] [stderr] 87 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `tokenizer::TokenizerState` [INFO] [stderr] --> src/tokenizer.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / pub fn new() -> TokenizerState { [INFO] [stderr] 51 | | TokenizerState { [INFO] [stderr] 52 | | state: TokenState::None, [INFO] [stderr] 53 | | parser: ParserState::new(), [INFO] [stderr] ... | [INFO] [stderr] 59 | | } [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 49 | impl Default for tokenizer::TokenizerState { [INFO] [stderr] 50 | fn default() -> Self { [INFO] [stderr] 51 | Self::new() [INFO] [stderr] 52 | } [INFO] [stderr] 53 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/tokenizer.rs:164:32 [INFO] [stderr] | [INFO] [stderr] 164 | if !(range.start == range.end) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `range.start != range.end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/tokenizer.rs:177:32 [INFO] [stderr] | [INFO] [stderr] 177 | if !(range.start == range.end) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `range.start != range.end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source/string.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | / fn peek_slice<'a>(&'a self, length: usize) -> Option<&'a [u8]> { [INFO] [stderr] 46 | | let pos = self.pos; [INFO] [stderr] 47 | | self.vec.get(pos..(pos+length)) [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source/string.rs:101:5 [INFO] [stderr] | [INFO] [stderr] 101 | / fn peek_slice<'a>(&'a self, _length: usize) -> Option<&'a [u8]> { [INFO] [stderr] 102 | | None [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source/mod.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | fn peek_slice<'a>(&'a self, length: usize) -> Option<&'a [u8]>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:272:54 [INFO] [stderr] | [INFO] [stderr] 272 | b'A'...b'F' => *codepoint |= (byte - b'A' + 10) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte - b'A' + 10)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:273:54 [INFO] [stderr] | [INFO] [stderr] 273 | b'a'...b'f' => *codepoint |= (byte - b'a' + 10) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte - b'a' + 10)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/tokenizer.rs:274:54 [INFO] [stderr] | [INFO] [stderr] 274 | b'0'...b'9' => *codepoint |= (byte - b'0') as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(byte - b'0')` [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 deriving a `Default` implementation for `sink::debug_print::PrintSink` [INFO] [stderr] --> src/sink/debug_print.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | / pub fn new() -> PrintSink { [INFO] [stderr] 9 | | PrintSink {} [INFO] [stderr] 10 | | } [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] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/sink/into_enum.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / fn range_to_str<'b>(&'b mut self, range: Range) -> &'b str { [INFO] [stderr] 45 | | let raw = &self.source[(range.start)..(range.end)]; [INFO] [stderr] 46 | | ::std::str::from_utf8(raw).unwrap() [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/sink/into_enum.rs:49:22 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn to_result(mut self) -> Json { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sink/into_enum.rs:220:9 [INFO] [stderr] | [INFO] [stderr] 220 | / match self.stack.last_mut().unwrap() { [INFO] [stderr] 221 | | &mut Json::Object(ref mut obj) => { [INFO] [stderr] 222 | | obj.push((key, value)); [INFO] [stderr] 223 | | } [INFO] [stderr] 224 | | _ => unreachable!(), [INFO] [stderr] 225 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 220 | match *self.stack.last_mut().unwrap() { [INFO] [stderr] 221 | Json::Object(ref mut obj) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/sink/into_enum.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | / match self.stack.last_mut().unwrap() { [INFO] [stderr] 231 | | &mut Json::Array(ref mut arr) => { [INFO] [stderr] 232 | | arr.push(value); [INFO] [stderr] 233 | | } [INFO] [stderr] 234 | | _ => unreachable!(), [INFO] [stderr] 235 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 230 | match *self.stack.last_mut().unwrap() { [INFO] [stderr] 231 | Json::Array(ref mut arr) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/input.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | / fn peek_slice<'a>(&'a self, length: usize) -> Option<&'a [u8]> { [INFO] [stderr] 86 | | self.source.peek_slice(length) [INFO] [stderr] 87 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source/string.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | / fn peek_slice<'a>(&'a self, length: usize) -> Option<&'a [u8]> { [INFO] [stderr] 46 | | let pos = self.pos; [INFO] [stderr] 47 | | self.vec.get(pos..(pos+length)) [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source/string.rs:101:5 [INFO] [stderr] | [INFO] [stderr] 101 | / fn peek_slice<'a>(&'a self, _length: usize) -> Option<&'a [u8]> { [INFO] [stderr] 102 | | None [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/source/mod.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | fn peek_slice<'a>(&'a self, length: usize) -> Option<&'a [u8]>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> tests/lib.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: unused import: `Sink` [INFO] [stderr] --> tests/lib.rs:6:37 [INFO] [stderr] | [INFO] [stderr] 6 | use iterative_json_parser::{Source, Sink}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> tests/lib.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> tests/lib.rs:320:43 [INFO] [stderr] | [INFO] [stderr] 320 | const JSON_TEST_SUITE_ACCEPTABLE_FAILS: [&'static str; 25] = [ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unused variable: `result` [INFO] [stderr] --> tests/lib.rs:410:25 [INFO] [stderr] | [INFO] [stderr] 410 | let result = parse_to_enum(&mut buf); [INFO] [stderr] | ^^^^^^ help: consider using `_result` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> tests/lib.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | let mut ss = SourceSink { [INFO] [stderr] | ----^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> tests/lib.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | let mut bailing_ss = SourceSink { [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: The function/method `parse_to_enum_print` doesn't need a mutable reference [INFO] [stderr] --> tests/lib.rs:382:54 [INFO] [stderr] | [INFO] [stderr] 382 | let result = parse_to_enum_print(&mut buf, &test_name, true); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `parse_to_enum_print` doesn't need a mutable reference [INFO] [stderr] --> tests/lib.rs:396:54 [INFO] [stderr] | [INFO] [stderr] 396 | let result = parse_to_enum_print(&mut buf, &test_name, false); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> tests/lib.rs:397:21 [INFO] [stderr] | [INFO] [stderr] 397 | / match result { [INFO] [stderr] 398 | | Ok(res) => { [INFO] [stderr] 399 | | if !can_fail { [INFO] [stderr] 400 | | success = false; [INFO] [stderr] ... | [INFO] [stderr] 406 | | Err(_) => (), [INFO] [stderr] 407 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 397 | if let Ok(res) = result { [INFO] [stderr] 398 | if !can_fail { [INFO] [stderr] 399 | success = false; [INFO] [stderr] 400 | } else { [INFO] [stderr] 401 | println!("ACCEPTABLE"); [INFO] [stderr] 402 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: The function/method `parse_to_enum` doesn't need a mutable reference [INFO] [stderr] --> tests/lib.rs:410:48 [INFO] [stderr] | [INFO] [stderr] 410 | let result = parse_to_enum(&mut buf); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.41s [INFO] running `"docker" "inspect" "4c38ced6975a24c113da112a7ab7e5215ea88de3c0232fa32a2c1e0683525761"` [INFO] running `"docker" "rm" "-f" "4c38ced6975a24c113da112a7ab7e5215ea88de3c0232fa32a2c1e0683525761"` [INFO] [stdout] 4c38ced6975a24c113da112a7ab7e5215ea88de3c0232fa32a2c1e0683525761