[INFO] crate minifier 0.0.20 is already in cache [INFO] extracting crate minifier 0.0.20 into work/ex/clippy-test-run/sources/stable/reg/minifier/0.0.20 [INFO] extracting crate minifier 0.0.20 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/minifier/0.0.20 [INFO] validating manifest of minifier-0.0.20 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 minifier-0.0.20 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 minifier-0.0.20 [INFO] finished frobbing minifier-0.0.20 [INFO] frobbed toml for minifier-0.0.20 written to work/ex/clippy-test-run/sources/stable/reg/minifier/0.0.20/Cargo.toml [INFO] started frobbing minifier-0.0.20 [INFO] finished frobbing minifier-0.0.20 [INFO] frobbed toml for minifier-0.0.20 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/minifier/0.0.20/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 minifier-0.0.20 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-6/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/minifier/0.0.20:/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] e50a69d3b9f3c2b5ae9778c7ed019b74aacf5801baa541ecbc32720156fd7785 [INFO] running `"docker" "start" "-a" "e50a69d3b9f3c2b5ae9778c7ed019b74aacf5801baa541ecbc32720156fd7785"` [INFO] [stderr] Checking macro-utils v0.1.2 [INFO] [stderr] Checking minifier v0.0.20 (/opt/crater/workdir) [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/css/token.rs:260:69 [INFO] [stderr] | [INFO] [stderr] 260 | SelectorOperator::OneAttributeEquals => write!(f, "{}", "~="), [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/css/token.rs:261:83 [INFO] [stderr] | [INFO] [stderr] 261 | SelectorOperator::EqualsOrStartsWithFollowedByDash => write!(f, "{}", "|="), [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/css/token.rs:262:59 [INFO] [stderr] | [INFO] [stderr] 262 | SelectorOperator::EndsWith => write!(f, "{}", "$="), [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/css/token.rs:263:66 [INFO] [stderr] | [INFO] [stderr] 263 | SelectorOperator::FirstStartsWith => write!(f, "{}", "^="), [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/css/token.rs:264:59 [INFO] [stderr] | [INFO] [stderr] 264 | SelectorOperator::Contains => write!(f, "{}", "*="), [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: redundant field names in struct initialization [INFO] [stderr] --> src/js/token.rs:500:36 [INFO] [stderr] | [INFO] [stderr] 500 | is_interactive: is_interactive, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_interactive` [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/js/token.rs:501:36 [INFO] [stderr] | [INFO] [stderr] 501 | is_global: is_global, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_global` [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: literal with an empty format string [INFO] [stderr] --> src/css/token.rs:260:69 [INFO] [stderr] | [INFO] [stderr] 260 | SelectorOperator::OneAttributeEquals => write!(f, "{}", "~="), [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/css/token.rs:261:83 [INFO] [stderr] | [INFO] [stderr] 261 | SelectorOperator::EqualsOrStartsWithFollowedByDash => write!(f, "{}", "|="), [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/css/token.rs:262:59 [INFO] [stderr] | [INFO] [stderr] 262 | SelectorOperator::EndsWith => write!(f, "{}", "$="), [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/css/token.rs:263:66 [INFO] [stderr] | [INFO] [stderr] 263 | SelectorOperator::FirstStartsWith => write!(f, "{}", "^="), [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/css/token.rs:264:59 [INFO] [stderr] | [INFO] [stderr] 264 | SelectorOperator::Contains => write!(f, "{}", "*="), [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: redundant field names in struct initialization [INFO] [stderr] --> src/js/token.rs:500:36 [INFO] [stderr] | [INFO] [stderr] 500 | is_interactive: is_interactive, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_interactive` [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/js/token.rs:501:36 [INFO] [stderr] | [INFO] [stderr] 501 | is_global: is_global, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_global` [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: module has the same name as its containing module [INFO] [stderr] --> src/css/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | mod css; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/js/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | mod js; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/css/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | mod css; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/js/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | mod js; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/css/token.rs:125:19 [INFO] [stderr] | [INFO] [stderr] 125 | fn is_useless(&self) -> bool { [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/css/token.rs:131:20 [INFO] [stderr] | [INFO] [stderr] 131 | fn is_operator(&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 loop could be written as a `for` loop [INFO] [stderr] --> src/css/token.rs:371:32 [INFO] [stderr] | [INFO] [stderr] 371 | while let Some((pos, c)) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for (pos, c) in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/css/token.rs:401:32 [INFO] [stderr] | [INFO] [stderr] 401 | while let Some((pos, c)) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for (pos, c) in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/css/token.rs:426:54 [INFO] [stderr] | [INFO] [stderr] 426 | let ret = Some(Token::String(&source[*start_pos..pos + 1])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `*start_pos..=pos` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/css/token.rs:438:12 [INFO] [stderr] | [INFO] [stderr] 438 | if is_in_attribute_selector == false && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_in_attribute_selector` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/css/token.rs:439:41 [INFO] [stderr] | [INFO] [stderr] 439 | ((is_in_block == 0 && is_in_media == false) || [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_in_media` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/css/token.rs:440:21 [INFO] [stderr] | [INFO] [stderr] 440 | (is_in_media == true && is_in_block == 1)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_in_media` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/css/token.rs:582:19 [INFO] [stderr] | [INFO] [stderr] 582 | } else if is_in_calc == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_in_calc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/css/token.rs:599:67 [INFO] [stderr] | [INFO] [stderr] 599 | } else if is_in_calc == true && v[i - 1].is_useless() { [INFO] [stderr] | ___________________________________________________________________^ [INFO] [stderr] 600 | | v.remove(i); [INFO] [stderr] 601 | | continue [INFO] [stderr] 602 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/css/token.rs:596:58 [INFO] [stderr] | [INFO] [stderr] 596 | (i < v.len() - 1 && v[i + 1].is_char())) { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 597 | | v.remove(i); [INFO] [stderr] 598 | | continue [INFO] [stderr] 599 | | } else if is_in_calc == true && v[i - 1].is_useless() { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/css/token.rs:591:16 [INFO] [stderr] | [INFO] [stderr] 591 | if is_in_calc == false && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_in_calc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/css/token.rs:599:23 [INFO] [stderr] | [INFO] [stderr] 599 | } else if is_in_calc == true && v[i - 1].is_useless() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_in_calc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/js/token.rs:65:19 [INFO] [stderr] | [INFO] [stderr] 65 | fn is_useless(&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 loop could be written as a `for` loop [INFO] [stderr] --> src/js/token.rs:463:32 [INFO] [stderr] | [INFO] [stderr] 463 | while let Some((pos, c)) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for (pos, c) in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/js/token.rs:529:32 [INFO] [stderr] | [INFO] [stderr] 529 | while let Some((pos, c)) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for (pos, c) in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/js/token.rs:554:54 [INFO] [stderr] | [INFO] [stderr] 554 | let ret = Some(Token::String(&source[*start_pos..pos + 1])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `*start_pos..=pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [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/js/token.rs:639:1 [INFO] [stderr] | [INFO] [stderr] 639 | / pub fn tokenize<'a>(source: &'a str) -> Tokens<'a> { [INFO] [stderr] 640 | | let mut v = Vec::with_capacity(1000); [INFO] [stderr] 641 | | let mut start = 0; [INFO] [stderr] 642 | | let mut iterator = source.char_indices().peekable(); [INFO] [stderr] ... | [INFO] [stderr] 706 | | Tokens(v) [INFO] [stderr] 707 | | } [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/json/json_minifier.rs:25:12 [INFO] [stderr] | [INFO] [stderr] 25 | item1: &char, [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json/json_minifier.rs:36:12 [INFO] [stderr] | [INFO] [stderr] 36 | item1: &char, [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `minifier`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/css/token.rs:125:19 [INFO] [stderr] | [INFO] [stderr] 125 | fn is_useless(&self) -> bool { [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/css/token.rs:131:20 [INFO] [stderr] | [INFO] [stderr] 131 | fn is_operator(&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 loop could be written as a `for` loop [INFO] [stderr] --> src/css/token.rs:371:32 [INFO] [stderr] | [INFO] [stderr] 371 | while let Some((pos, c)) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for (pos, c) in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/css/token.rs:401:32 [INFO] [stderr] | [INFO] [stderr] 401 | while let Some((pos, c)) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for (pos, c) in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/css/token.rs:426:54 [INFO] [stderr] | [INFO] [stderr] 426 | let ret = Some(Token::String(&source[*start_pos..pos + 1])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `*start_pos..=pos` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/css/token.rs:438:12 [INFO] [stderr] | [INFO] [stderr] 438 | if is_in_attribute_selector == false && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_in_attribute_selector` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/css/token.rs:439:41 [INFO] [stderr] | [INFO] [stderr] 439 | ((is_in_block == 0 && is_in_media == false) || [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_in_media` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/css/token.rs:440:21 [INFO] [stderr] | [INFO] [stderr] 440 | (is_in_media == true && is_in_block == 1)) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_in_media` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/css/token.rs:582:19 [INFO] [stderr] | [INFO] [stderr] 582 | } else if is_in_calc == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_in_calc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/css/token.rs:599:67 [INFO] [stderr] | [INFO] [stderr] 599 | } else if is_in_calc == true && v[i - 1].is_useless() { [INFO] [stderr] | ___________________________________________________________________^ [INFO] [stderr] 600 | | v.remove(i); [INFO] [stderr] 601 | | continue [INFO] [stderr] 602 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/css/token.rs:596:58 [INFO] [stderr] | [INFO] [stderr] 596 | (i < v.len() - 1 && v[i + 1].is_char())) { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 597 | | v.remove(i); [INFO] [stderr] 598 | | continue [INFO] [stderr] 599 | | } else if is_in_calc == true && v[i - 1].is_useless() { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/css/token.rs:591:16 [INFO] [stderr] | [INFO] [stderr] 591 | if is_in_calc == false && [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!is_in_calc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/css/token.rs:599:23 [INFO] [stderr] | [INFO] [stderr] 599 | } else if is_in_calc == true && v[i - 1].is_useless() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `is_in_calc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/js/token.rs:65:19 [INFO] [stderr] | [INFO] [stderr] 65 | fn is_useless(&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 loop could be written as a `for` loop [INFO] [stderr] --> src/js/token.rs:463:32 [INFO] [stderr] | [INFO] [stderr] 463 | while let Some((pos, c)) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for (pos, c) in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/js/token.rs:529:32 [INFO] [stderr] | [INFO] [stderr] 529 | while let Some((pos, c)) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for (pos, c) in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/js/token.rs:554:54 [INFO] [stderr] | [INFO] [stderr] 554 | let ret = Some(Token::String(&source[*start_pos..pos + 1])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `*start_pos..=pos` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [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/js/token.rs:639:1 [INFO] [stderr] | [INFO] [stderr] 639 | / pub fn tokenize<'a>(source: &'a str) -> Tokens<'a> { [INFO] [stderr] 640 | | let mut v = Vec::with_capacity(1000); [INFO] [stderr] 641 | | let mut start = 0; [INFO] [stderr] 642 | | let mut iterator = source.char_indices().peekable(); [INFO] [stderr] ... | [INFO] [stderr] 706 | | Tokens(v) [INFO] [stderr] 707 | | } [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/json/json_minifier.rs:25:12 [INFO] [stderr] | [INFO] [stderr] 25 | item1: &char, [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json/json_minifier.rs:36:12 [INFO] [stderr] | [INFO] [stderr] 36 | item1: &char, [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: identical conversion [INFO] [stderr] --> src/json/mod.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | let input = "\n".into(); [INFO] [stderr] | ^^^^^^^^^^^ help: consider removing `.into()`: `"\n"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json/mod.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | let input = r#" [INFO] [stderr] | _________________^ [INFO] [stderr] 89 | | { [INFO] [stderr] 90 | | "test": "\" test2", [INFO] [stderr] 91 | | "test2": "", [INFO] [stderr] 92 | | "test3": " " [INFO] [stderr] 93 | | } [INFO] [stderr] 94 | | "#.into(); [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `.into()` [INFO] [stderr] | [INFO] [stderr] 88 | let input = r#" [INFO] [stderr] 89 | { [INFO] [stderr] 90 | "test": "\" test2", [INFO] [stderr] 91 | "test2": "", [INFO] [stderr] 92 | "test3": " " [INFO] [stderr] 93 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `minifier`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e50a69d3b9f3c2b5ae9778c7ed019b74aacf5801baa541ecbc32720156fd7785"` [INFO] running `"docker" "rm" "-f" "e50a69d3b9f3c2b5ae9778c7ed019b74aacf5801baa541ecbc32720156fd7785"` [INFO] [stdout] e50a69d3b9f3c2b5ae9778c7ed019b74aacf5801baa541ecbc32720156fd7785