[INFO] crate trimmer 0.3.6 is already in cache [INFO] extracting crate trimmer 0.3.6 into work/ex/clippy-test-run/sources/stable/reg/trimmer/0.3.6 [INFO] extracting crate trimmer 0.3.6 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/trimmer/0.3.6 [INFO] validating manifest of trimmer-0.3.6 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 trimmer-0.3.6 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 trimmer-0.3.6 [INFO] finished frobbing trimmer-0.3.6 [INFO] frobbed toml for trimmer-0.3.6 written to work/ex/clippy-test-run/sources/stable/reg/trimmer/0.3.6/Cargo.toml [INFO] started frobbing trimmer-0.3.6 [INFO] finished frobbing trimmer-0.3.6 [INFO] frobbed toml for trimmer-0.3.6 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/trimmer/0.3.6/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 trimmer-0.3.6 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/trimmer/0.3.6:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 22f15b54df47aa8af256aed6e2175985cf9700d9d1a837257471b4a34be6e31f [INFO] running `"docker" "start" "-a" "22f15b54df47aa8af256aed6e2175985cf9700d9d1a837257471b4a34be6e31f"` [INFO] [stderr] Checking combine v2.5.2 [INFO] [stderr] Checking trimmer v0.3.6 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/grammar.rs:530:13 [INFO] [stderr] | [INFO] [stderr] 530 | target: target, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `target` [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/grammar.rs:686:13 [INFO] [stderr] | [INFO] [stderr] 686 | options: options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [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/grammar.rs:687:13 [INFO] [stderr] | [INFO] [stderr] 687 | body: body, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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/helpers.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/helpers.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/helpers.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | keyword: keyword, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `keyword` [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/helpers.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/helpers.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/indent.rs:99:17 [INFO] [stderr] | [INFO] [stderr] 99 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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/oneline.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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/optimize.rs:90:17 [INFO] [stderr] | [INFO] [stderr] 90 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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: using `writeln!(&mut buf, "")` [INFO] [stderr] --> src/parse_error.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | writeln!(&mut buf, "").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(&mut buf)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/grammar.rs:530:13 [INFO] [stderr] | [INFO] [stderr] 530 | target: target, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `target` [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/grammar.rs:686:13 [INFO] [stderr] | [INFO] [stderr] 686 | options: options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokenizer.rs:394:13 [INFO] [stderr] | [INFO] [stderr] 394 | buf: buf, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `buf` [INFO] [stderr] | [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] = 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/grammar.rs:687:13 [INFO] [stderr] | [INFO] [stderr] 687 | body: body, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [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/helpers.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/helpers.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/helpers.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | keyword: keyword, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `keyword` [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/helpers.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/helpers.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | value: value, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [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/indent.rs:99:17 [INFO] [stderr] | [INFO] [stderr] 99 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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/oneline.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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/optimize.rs:90:17 [INFO] [stderr] | [INFO] [stderr] 90 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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: using `writeln!(&mut buf, "")` [INFO] [stderr] --> src/parse_error.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | writeln!(&mut buf, "").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(&mut buf)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokenizer.rs:394:13 [INFO] [stderr] | [INFO] [stderr] 394 | buf: buf, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `buf` [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/tests/diff.rs:46:20 [INFO] [stderr] | [INFO] [stderr] 46 | LcsTable { lengths: lengths, a: a, b: b } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `lengths` [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/tests/diff.rs:46:38 [INFO] [stderr] | [INFO] [stderr] 46 | LcsTable { lengths: lengths, a: a, b: b } [INFO] [stderr] | ^^^^ help: replace it with: `a` [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/tests/diff.rs:46:44 [INFO] [stderr] | [INFO] [stderr] 46 | LcsTable { lengths: lengths, a: a, b: b } [INFO] [stderr] | ^^^^ help: replace it with: `b` [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: unneeded return statement [INFO] [stderr] --> src/grammar.rs:157:5 [INFO] [stderr] | [INFO] [stderr] 157 | return res; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `res` [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/grammar.rs:691:9 [INFO] [stderr] | [INFO] [stderr] 691 | return Ok(template(tpl)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(template(tpl))` [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: unnecessary parentheses around method argument [INFO] [stderr] --> src/number.rs:138:27 [INFO] [stderr] | [INFO] [stderr] 138 | b.checked_sub((-a as u64)).map(val) [INFO] [stderr] | ^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/number.rs:138:27 [INFO] [stderr] | [INFO] [stderr] 138 | b.checked_sub((-a as u64)).map(val) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/number.rs:162:27 [INFO] [stderr] | [INFO] [stderr] 162 | a.checked_add((-b as u64)).map(val) [INFO] [stderr] | ^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/number.rs:162:27 [INFO] [stderr] | [INFO] [stderr] 162 | a.checked_add((-b as u64)).map(val) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/output.rs:5:32 [INFO] [stderr] | [INFO] [stderr] 5 | pub const EMPTY_STR: &'static &'static str = &""; [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: unneeded return statement [INFO] [stderr] --> src/render.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | return Ok(rnd.buf) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(rnd.buf)` [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: unneeded return statement [INFO] [stderr] --> src/render.rs:276:13 [INFO] [stderr] | [INFO] [stderr] 276 | / return OwningRef::new(nothing(&r.nothing, root)) [INFO] [stderr] 277 | | .map(|_| TRUE as &Variable); [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 276 | OwningRef::new(nothing(&r.nothing, root)) [INFO] [stderr] 277 | .map(|_| TRUE as &Variable) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/render.rs:295:13 [INFO] [stderr] | [INFO] [stderr] 295 | / return OwningRef::new(Rc::new(map)) [INFO] [stderr] 296 | | .map(|x: &HashMap<_, _>| x as &Variable).erase_owner(); [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 295 | OwningRef::new(Rc::new(map)) [INFO] [stderr] 296 | .map(|x: &HashMap<_, _>| x as &Variable).erase_owner() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/render.rs:302:13 [INFO] [stderr] | [INFO] [stderr] 302 | / return OwningRef::new(Rc::new(map)) [INFO] [stderr] 303 | | .map(|x: &Vec<_>| x as &Variable).erase_owner(); [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 302 | OwningRef::new(Rc::new(map)) [INFO] [stderr] 303 | .map(|x: &Vec<_>| x as &Variable).erase_owner() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/render.rs:371:56 [INFO] [stderr] | [INFO] [stderr] 371 | Output { left_ws, right_ws, ref validator, expr: _ } => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Output { left_ws, right_ws, ref validator, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/box_vars.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: unneeded return statement [INFO] [stderr] --> src/box_vars.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: unneeded return statement [INFO] [stderr] --> src/box_vars.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: unneeded return statement [INFO] [stderr] --> src/box_vars.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:155:17 [INFO] [stderr] | [INFO] [stderr] 155 | return Ok(tok) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tok)` [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: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | return Ok(tok) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tok)` [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: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:220:17 [INFO] [stderr] | [INFO] [stderr] 220 | return Ok(tok) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tok)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/vars.rs:26:23 [INFO] [stderr] | [INFO] [stderr] 26 | pub const UNDEFINED: &'static Undefined = &Undefined; [INFO] [stderr] | -^^^^^^^---------- help: consider removing `'static`: `&Undefined` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/vars.rs:27:19 [INFO] [stderr] | [INFO] [stderr] 27 | pub const EMPTY: &'static Empty = &Empty; [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&Empty` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/vars.rs:28:18 [INFO] [stderr] | [INFO] [stderr] 28 | pub const TRUE: &'static bool = &true; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&bool` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/vars.rs:29:19 [INFO] [stderr] | [INFO] [stderr] 29 | pub const FALSE: &'static bool = &false; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&bool` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/vars.rs:252:9 [INFO] [stderr] | [INFO] [stderr] 252 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/serde.rs:10:27 [INFO] [stderr] | [INFO] [stderr] 10 | pub const TRUE: &'static &'static str = &"true"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/serde.rs:11:28 [INFO] [stderr] | [INFO] [stderr] 11 | pub const FALSE: &'static &'static str = &"false"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/grammar.rs:157:5 [INFO] [stderr] | [INFO] [stderr] 157 | return res; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `res` [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/grammar.rs:691:9 [INFO] [stderr] | [INFO] [stderr] 691 | return Ok(template(tpl)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(template(tpl))` [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: unnecessary parentheses around method argument [INFO] [stderr] --> src/number.rs:138:27 [INFO] [stderr] | [INFO] [stderr] 138 | b.checked_sub((-a as u64)).map(val) [INFO] [stderr] | ^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/number.rs:138:27 [INFO] [stderr] | [INFO] [stderr] 138 | b.checked_sub((-a as u64)).map(val) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/number.rs:162:27 [INFO] [stderr] | [INFO] [stderr] 162 | a.checked_add((-b as u64)).map(val) [INFO] [stderr] | ^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/number.rs:162:27 [INFO] [stderr] | [INFO] [stderr] 162 | a.checked_add((-b as u64)).map(val) [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/output.rs:5:32 [INFO] [stderr] | [INFO] [stderr] 5 | pub const EMPTY_STR: &'static &'static str = &""; [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: unneeded return statement [INFO] [stderr] --> src/render.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | return Ok(rnd.buf) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(rnd.buf)` [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: unneeded return statement [INFO] [stderr] --> src/render.rs:276:13 [INFO] [stderr] | [INFO] [stderr] 276 | / return OwningRef::new(nothing(&r.nothing, root)) [INFO] [stderr] 277 | | .map(|_| TRUE as &Variable); [INFO] [stderr] | |____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 276 | OwningRef::new(nothing(&r.nothing, root)) [INFO] [stderr] 277 | .map(|_| TRUE as &Variable) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/render.rs:295:13 [INFO] [stderr] | [INFO] [stderr] 295 | / return OwningRef::new(Rc::new(map)) [INFO] [stderr] 296 | | .map(|x: &HashMap<_, _>| x as &Variable).erase_owner(); [INFO] [stderr] | |_______________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 295 | OwningRef::new(Rc::new(map)) [INFO] [stderr] 296 | .map(|x: &HashMap<_, _>| x as &Variable).erase_owner() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/render.rs:302:13 [INFO] [stderr] | [INFO] [stderr] 302 | / return OwningRef::new(Rc::new(map)) [INFO] [stderr] 303 | | .map(|x: &Vec<_>| x as &Variable).erase_owner(); [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 302 | OwningRef::new(Rc::new(map)) [INFO] [stderr] 303 | .map(|x: &Vec<_>| x as &Variable).erase_owner() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/render.rs:371:56 [INFO] [stderr] | [INFO] [stderr] 371 | Output { left_ws, right_ws, ref validator, expr: _ } => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Output { left_ws, right_ws, ref validator, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/box_vars.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: unneeded return statement [INFO] [stderr] --> src/box_vars.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: unneeded return statement [INFO] [stderr] --> src/box_vars.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: unneeded return statement [INFO] [stderr] --> src/box_vars.rs:193:9 [INFO] [stderr] | [INFO] [stderr] 193 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:155:17 [INFO] [stderr] | [INFO] [stderr] 155 | return Ok(tok) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tok)` [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: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | return Ok(tok) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tok)` [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: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:220:17 [INFO] [stderr] | [INFO] [stderr] 220 | return Ok(tok) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tok)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/vars.rs:26:23 [INFO] [stderr] | [INFO] [stderr] 26 | pub const UNDEFINED: &'static Undefined = &Undefined; [INFO] [stderr] | -^^^^^^^---------- help: consider removing `'static`: `&Undefined` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/vars.rs:27:19 [INFO] [stderr] | [INFO] [stderr] 27 | pub const EMPTY: &'static Empty = &Empty; [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&Empty` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/vars.rs:28:18 [INFO] [stderr] | [INFO] [stderr] 28 | pub const TRUE: &'static bool = &true; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&bool` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/vars.rs:29:19 [INFO] [stderr] | [INFO] [stderr] 29 | pub const FALSE: &'static bool = &false; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&bool` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/vars.rs:252:9 [INFO] [stderr] | [INFO] [stderr] 252 | return stringify!(#name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `stringify!(#name)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/serde.rs:10:27 [INFO] [stderr] | [INFO] [stderr] 10 | pub const TRUE: &'static &'static str = &"true"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/serde.rs:11:28 [INFO] [stderr] | [INFO] [stderr] 11 | pub const FALSE: &'static &'static str = &"false"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:31:41 [INFO] [stderr] | [INFO] [stderr] 31 | Comparable(ComparableInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:37:41 [INFO] [stderr] | [INFO] [stderr] 37 | Comparable(ComparableInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:43:41 [INFO] [stderr] | [INFO] [stderr] 43 | Comparable(ComparableInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:67:41 [INFO] [stderr] | [INFO] [stderr] 67 | Comparable(ComparableInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [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 u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:73:41 [INFO] [stderr] | [INFO] [stderr] 73 | Comparable(ComparableInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:79:41 [INFO] [stderr] | [INFO] [stderr] 79 | Comparable(ComparableInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [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 f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:97:41 [INFO] [stderr] | [INFO] [stderr] 97 | Comparable(ComparableInner::F64(x as f64)) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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: large size difference between variants [INFO] [stderr] --> src/grammar.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / Loop { [INFO] [stderr] 89 | | indent: usize, [INFO] [stderr] 90 | | target: AssignTarget, [INFO] [stderr] 91 | | iterator: Expr, [INFO] [stderr] 92 | | filter: Option, [INFO] [stderr] 93 | | body: Body, [INFO] [stderr] 94 | | }, [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/grammar.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / Loop { [INFO] [stderr] 89 | | indent: usize, [INFO] [stderr] 90 | | target: AssignTarget, [INFO] [stderr] 91 | | iterator: Expr, [INFO] [stderr] 92 | | filter: Option, [INFO] [stderr] 93 | | body: Body, [INFO] [stderr] 94 | | }, [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/grammar.rs:178:22 [INFO] [stderr] | [INFO] [stderr] 178 | .map(|vec| List(vec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `List` [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: redundant closure found [INFO] [stderr] --> src/grammar.rs:187:22 [INFO] [stderr] | [INFO] [stderr] 187 | .map(|vec| Dict(vec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Dict` [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: length comparison to zero [INFO] [stderr] --> src/grammar.rs:354:12 [INFO] [stderr] | [INFO] [stderr] 354 | if vec.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `vec.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/grammar.rs:532:24 [INFO] [stderr] | [INFO] [stderr] 532 | filter: if filter.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!filter.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: single-character string constant used as pattern [INFO] [stderr] --> src/grammar.rs:616:32 [INFO] [stderr] | [INFO] [stderr] 616 | if tok.value.ends_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/grammar.rs:618:39 [INFO] [stderr] | [INFO] [stderr] 618 | } else if tok.value.ends_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/grammar.rs:625:34 [INFO] [stderr] | [INFO] [stderr] 625 | if tok.value.starts_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/grammar.rs:627:41 [INFO] [stderr] | [INFO] [stderr] 627 | } else if tok.value.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `grammar::Parser` [INFO] [stderr] --> src/grammar.rs:641:5 [INFO] [stderr] | [INFO] [stderr] 641 | / pub fn new() -> Parser { [INFO] [stderr] 642 | | Parser { [INFO] [stderr] 643 | | pre: Preparser::new(), [INFO] [stderr] 644 | | tok: Tokenizer::new(), [INFO] [stderr] ... | [INFO] [stderr] 648 | | } [INFO] [stderr] 649 | | } [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] 635 | impl Default for grammar::Parser { [INFO] [stderr] 636 | fn default() -> Self { [INFO] [stderr] 637 | Self::new() [INFO] [stderr] 638 | } [INFO] [stderr] 639 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stderr] --> src/indent.rs:105:16 [INFO] [stderr] | [INFO] [stderr] 105 | .. body [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_update)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:23:33 [INFO] [stderr] | [INFO] [stderr] 23 | Number(NumberInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:29:33 [INFO] [stderr] | [INFO] [stderr] 29 | Number(NumberInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:35:33 [INFO] [stderr] | [INFO] [stderr] 35 | Number(NumberInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:47:33 [INFO] [stderr] | [INFO] [stderr] 47 | Number(NumberInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [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 u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:53:33 [INFO] [stderr] | [INFO] [stderr] 53 | Number(NumberInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:59:33 [INFO] [stderr] | [INFO] [stderr] 59 | Number(NumberInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [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 f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:99:33 [INFO] [stderr] | [INFO] [stderr] 99 | Number(NumberInner::F64(x as f64)) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/oneline.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | / match st[i].code { [INFO] [stderr] 43 | | Output { ref mut left_ws, ref mut right_ws, .. } => { [INFO] [stderr] 44 | | if *left_ws == Preserve { [INFO] [stderr] 45 | | *left_ws = if fix_start { Space } else { Strip }; [INFO] [stderr] ... | [INFO] [stderr] 51 | | _ => {} [INFO] [stderr] 52 | | } [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] 42 | if let Output { ref mut left_ws, ref mut right_ws, .. } = st[i].code { [INFO] [stderr] 43 | if *left_ws == Preserve { [INFO] [stderr] 44 | *left_ws = if fix_start { Space } else { Strip }; [INFO] [stderr] 45 | } [INFO] [stderr] 46 | if *right_ws == Preserve && fix_end { [INFO] [stderr] 47 | *right_ws = if fix_end { Space } else { Strip }; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stderr] --> src/oneline.rs:81:16 [INFO] [stderr] | [INFO] [stderr] 81 | .. body [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/optimize.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | / match (interm.last_mut(), &item) { [INFO] [stderr] 42 | | ( [INFO] [stderr] 43 | | Some(&mut Statement { [INFO] [stderr] 44 | | position: (_, ref mut old_end), [INFO] [stderr] ... | [INFO] [stderr] 56 | | _ => {} [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 41 | if let ( [INFO] [stderr] 42 | Some(&mut Statement { [INFO] [stderr] 43 | position: (_, ref mut old_end), [INFO] [stderr] 44 | code: OutputRaw(ref mut prev), [INFO] [stderr] 45 | }), [INFO] [stderr] 46 | &Statement { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stderr] --> src/optimize.rs:96:16 [INFO] [stderr] | [INFO] [stderr] 96 | .. body [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `Options` [INFO] [stderr] --> src/options.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn new() -> Options { [INFO] [stderr] 10 | | Options { [INFO] [stderr] 11 | | syntax: Syntax::Plain, [INFO] [stderr] 12 | | new_line_at_eof: None, [INFO] [stderr] ... | [INFO] [stderr] 18 | | } [INFO] [stderr] 19 | | } [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] 7 | impl Default for Options { [INFO] [stderr] 8 | fn default() -> Self { [INFO] [stderr] 9 | Self::new() [INFO] [stderr] 10 | } [INFO] [stderr] 11 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/preparser.rs:89:70 [INFO] [stderr] | [INFO] [stderr] 89 | if end > 0 && regex[..end].ends_with(" ") { [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/preparser.rs:95:51 [INFO] [stderr] | [INFO] [stderr] 95 | if !regex.starts_with("^") { [INFO] [stderr] | ^^^ help: try using a char instead: `'^'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/preparser.rs:98:49 [INFO] [stderr] | [INFO] [stderr] 98 | if !regex.ends_with("$") { [INFO] [stderr] | ^^^ help: try using a char instead: `'$'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/render.rs:51:12 [INFO] [stderr] | [INFO] [stderr] 51 | if rnd.errors.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!rnd.errors.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: the loop variable `i` is only used to index `vec`. [INFO] [stderr] --> src/render.rs:232:22 [INFO] [stderr] | [INFO] [stderr] 232 | for i in 0..vec.len() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 232 | for in &vec { [INFO] [stderr] | ^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/render.rs:309:1 [INFO] [stderr] | [INFO] [stderr] 309 | / fn write_block<'x, 'render>(r: &mut Renderer, [INFO] [stderr] 310 | | root: &mut SubContext<'x, 'render>, [INFO] [stderr] 311 | | items: &OwningRef>, [Statement]>) [INFO] [stderr] 312 | | -> Result<(), fmt::Error> [INFO] [stderr] ... | [INFO] [stderr] 665 | | Ok(()) [INFO] [stderr] 666 | | } [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: length comparison to zero [INFO] [stderr] --> src/render.rs:342:28 [INFO] [stderr] | [INFO] [stderr] 342 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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/render.rs:354:28 [INFO] [stderr] | [INFO] [stderr] 354 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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/render.rs:359:32 [INFO] [stderr] | [INFO] [stderr] 359 | if r.buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!r.buf.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/render.rs:381:28 [INFO] [stderr] | [INFO] [stderr] 381 | if r.buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!r.buf.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/std_vars.rs:24:12 [INFO] [stderr] | [INFO] [stderr] 24 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:42:12 [INFO] [stderr] | [INFO] [stderr] 42 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/std_vars.rs:156:40 [INFO] [stderr] | [INFO] [stderr] 156 | impl<'render, V> Variable<'render> for HashMap [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 156 | impl<'render, V, S: ::std::hash::BuildHasher> Variable<'render> for HashMap [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/std_vars.rs:179:12 [INFO] [stderr] | [INFO] [stderr] 179 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/std_vars.rs:191:53 [INFO] [stderr] | [INFO] [stderr] 191 | impl<'a: 'render, 'render, V> Variable<'render> for HashMap<&'a str, V> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 191 | impl<'a: 'render, 'render, V, S: ::std::hash::BuildHasher> Variable<'render> for HashMap<&'a str, V, S> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/std_vars.rs:214:12 [INFO] [stderr] | [INFO] [stderr] 214 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:249:12 [INFO] [stderr] | [INFO] [stderr] 249 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:284:12 [INFO] [stderr] | [INFO] [stderr] 284 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:301:12 [INFO] [stderr] | [INFO] [stderr] 301 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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: impl for `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/std_vars.rs:319:44 [INFO] [stderr] | [INFO] [stderr] 319 | impl<'a, 'render, T> Variable<'render> for HashSet [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 319 | impl<'a, 'render, T, S: ::std::hash::BuildHasher> Variable<'render> for HashSet [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/std_vars.rs:326:12 [INFO] [stderr] | [INFO] [stderr] 326 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:343:12 [INFO] [stderr] | [INFO] [stderr] 343 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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 seem to be trying to match on a boolean expression [INFO] [stderr] --> src/std_vars.rs:358:12 [INFO] [stderr] | [INFO] [stderr] 358 | Ok(match *self { [INFO] [stderr] | ____________^ [INFO] [stderr] 359 | | true => TRUE.into(), [INFO] [stderr] 360 | | false => FALSE.into(), [INFO] [stderr] 361 | | }) [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if *self { TRUE.into() } else { FALSE.into() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_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/box_vars.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 28 | | -> Result<&'x str, DataError> [INFO] [stderr] 29 | | { [INFO] [stderr] 30 | | (**self).as_str_key() [INFO] [stderr] 31 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/box_vars.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 84 | | -> Result<&'x str, DataError> [INFO] [stderr] 85 | | { [INFO] [stderr] 86 | | (**self).as_str_key() [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/box_vars.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 140 | | -> Result<&'x str, DataError> [INFO] [stderr] 141 | | { [INFO] [stderr] 142 | | (**self).as_str_key() [INFO] [stderr] 143 | | } [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/box_vars.rs:195:5 [INFO] [stderr] | [INFO] [stderr] 195 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 196 | | -> Result<&'x str, DataError> [INFO] [stderr] 197 | | { [INFO] [stderr] 198 | | (**self).as_str_key() [INFO] [stderr] 199 | | } [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: single-character string constant used as pattern [INFO] [stderr] --> src/tokenizer.rs:111:66 [INFO] [stderr] | [INFO] [stderr] 111 | let end = self.buf[start_off..].find("\n"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tokenizer.rs:114:32 [INFO] [stderr] | [INFO] [stderr] 114 | }).unwrap_or(self.buf.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.buf.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tokenizer.rs:136:70 [INFO] [stderr] | [INFO] [stderr] 136 | let end = self.buf[start_off..].find("\n"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tokenizer.rs:139:36 [INFO] [stderr] | [INFO] [stderr] 139 | }).unwrap_or(self.buf.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.buf.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tokenizer.rs:180:62 [INFO] [stderr] | [INFO] [stderr] 180 | let end = self.buf[start_off..].find("\n"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokenizer.rs:289:45 [INFO] [stderr] | [INFO] [stderr] 289 | if kind == Kind::Newline && self.parens.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.parens.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 appear to be counting bytes the naive way [INFO] [stderr] --> src/tokenizer.rs:305:21 [INFO] [stderr] | [INFO] [stderr] 305 | let lines = val.as_bytes().iter().filter(|&&x| x == b'\n').count(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider using the bytecount crate: `bytecount::count(val.as_bytes(), b'\n')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::naive_bytecount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#naive_bytecount [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `varmap::Context<'render>` [INFO] [stderr] --> src/varmap.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new<'x>() -> Context<'x> { [INFO] [stderr] 31 | | Context { [INFO] [stderr] 32 | | nothing: Rc::new(()), [INFO] [stderr] 33 | | vars: HashMap::new(), [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [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] 28 | impl Default for varmap::Context<'render> { [INFO] [stderr] 29 | fn default() -> Self { [INFO] [stderr] 30 | Self::new() [INFO] [stderr] 31 | } [INFO] [stderr] 32 | } [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/vars.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | / fn as_str_key<'x>(&'x self) -> Result<&'x str, DataError> { [INFO] [stderr] 81 | | Err(DataError::StrKeyUnsupported(self.typename())) [INFO] [stderr] 82 | | } [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/vars.rs:254:5 [INFO] [stderr] | [INFO] [stderr] 254 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 255 | | -> Result<&'x str, DataError> [INFO] [stderr] 256 | | { [INFO] [stderr] 257 | | self.0.as_str_key() [INFO] [stderr] 258 | | } [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/serde.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / fn as_str_key<'x>(&'x self) -> Result<&'x str, DataError> { [INFO] [stderr] 49 | | use serde_json::Value::*; [INFO] [stderr] 50 | | match *self { [INFO] [stderr] 51 | | String(ref s) => Ok(s), [INFO] [stderr] 52 | | _ => Err(DataError::StrKeyUnsupported(self.typename())), [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [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: length comparison to zero [INFO] [stderr] --> src/serde.rs:128:33 [INFO] [stderr] | [INFO] [stderr] 128 | String(ref s) => Ok(s.len() > 0), [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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/serde.rs:129:32 [INFO] [stderr] | [INFO] [stderr] 129 | Array(ref a) => Ok(a.len() > 0), [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!a.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/serde.rs:130:33 [INFO] [stderr] | [INFO] [stderr] 130 | Object(ref o) => Ok(o.len() > 0), [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!o.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: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:31:41 [INFO] [stderr] | [INFO] [stderr] 31 | Comparable(ComparableInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:37:41 [INFO] [stderr] | [INFO] [stderr] 37 | Comparable(ComparableInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:43:41 [INFO] [stderr] | [INFO] [stderr] 43 | Comparable(ComparableInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:67:41 [INFO] [stderr] | [INFO] [stderr] 67 | Comparable(ComparableInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [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 u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:73:41 [INFO] [stderr] | [INFO] [stderr] 73 | Comparable(ComparableInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:79:41 [INFO] [stderr] | [INFO] [stderr] 79 | Comparable(ComparableInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [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 f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/compare.rs:97:41 [INFO] [stderr] | [INFO] [stderr] 97 | Comparable(ComparableInner::F64(x as f64)) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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: large size difference between variants [INFO] [stderr] --> src/grammar.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / Loop { [INFO] [stderr] 89 | | indent: usize, [INFO] [stderr] 90 | | target: AssignTarget, [INFO] [stderr] 91 | | iterator: Expr, [INFO] [stderr] 92 | | filter: Option, [INFO] [stderr] 93 | | body: Body, [INFO] [stderr] 94 | | }, [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/grammar.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / Loop { [INFO] [stderr] 89 | | indent: usize, [INFO] [stderr] 90 | | target: AssignTarget, [INFO] [stderr] 91 | | iterator: Expr, [INFO] [stderr] 92 | | filter: Option, [INFO] [stderr] 93 | | body: Body, [INFO] [stderr] 94 | | }, [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/grammar.rs:178:22 [INFO] [stderr] | [INFO] [stderr] 178 | .map(|vec| List(vec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `List` [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: redundant closure found [INFO] [stderr] --> src/grammar.rs:187:22 [INFO] [stderr] | [INFO] [stderr] 187 | .map(|vec| Dict(vec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Dict` [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: length comparison to zero [INFO] [stderr] --> src/grammar.rs:354:12 [INFO] [stderr] | [INFO] [stderr] 354 | if vec.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `vec.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/grammar.rs:532:24 [INFO] [stderr] | [INFO] [stderr] 532 | filter: if filter.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!filter.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: single-character string constant used as pattern [INFO] [stderr] --> src/grammar.rs:616:32 [INFO] [stderr] | [INFO] [stderr] 616 | if tok.value.ends_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/grammar.rs:618:39 [INFO] [stderr] | [INFO] [stderr] 618 | } else if tok.value.ends_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/grammar.rs:625:34 [INFO] [stderr] | [INFO] [stderr] 625 | if tok.value.starts_with("+") { [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/grammar.rs:627:41 [INFO] [stderr] | [INFO] [stderr] 627 | } else if tok.value.starts_with("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `grammar::Parser` [INFO] [stderr] --> src/grammar.rs:641:5 [INFO] [stderr] | [INFO] [stderr] 641 | / pub fn new() -> Parser { [INFO] [stderr] 642 | | Parser { [INFO] [stderr] 643 | | pre: Preparser::new(), [INFO] [stderr] 644 | | tok: Tokenizer::new(), [INFO] [stderr] ... | [INFO] [stderr] 648 | | } [INFO] [stderr] 649 | | } [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] 635 | impl Default for grammar::Parser { [INFO] [stderr] 636 | fn default() -> Self { [INFO] [stderr] 637 | Self::new() [INFO] [stderr] 638 | } [INFO] [stderr] 639 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stderr] --> src/indent.rs:105:16 [INFO] [stderr] | [INFO] [stderr] 105 | .. body [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_update)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:23:33 [INFO] [stderr] | [INFO] [stderr] 23 | Number(NumberInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 i16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:29:33 [INFO] [stderr] | [INFO] [stderr] 29 | Number(NumberInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:35:33 [INFO] [stderr] | [INFO] [stderr] 35 | Number(NumberInner::I64(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:47:33 [INFO] [stderr] | [INFO] [stderr] 47 | Number(NumberInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [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 u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:53:33 [INFO] [stderr] | [INFO] [stderr] 53 | Number(NumberInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:59:33 [INFO] [stderr] | [INFO] [stderr] 59 | Number(NumberInner::U64(x as u64)) [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(x)` [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 f32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/number.rs:99:33 [INFO] [stderr] | [INFO] [stderr] 99 | Number(NumberInner::F64(x as f64)) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/oneline.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | / match st[i].code { [INFO] [stderr] 43 | | Output { ref mut left_ws, ref mut right_ws, .. } => { [INFO] [stderr] 44 | | if *left_ws == Preserve { [INFO] [stderr] 45 | | *left_ws = if fix_start { Space } else { Strip }; [INFO] [stderr] ... | [INFO] [stderr] 51 | | _ => {} [INFO] [stderr] 52 | | } [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] 42 | if let Output { ref mut left_ws, ref mut right_ws, .. } = st[i].code { [INFO] [stderr] 43 | if *left_ws == Preserve { [INFO] [stderr] 44 | *left_ws = if fix_start { Space } else { Strip }; [INFO] [stderr] 45 | } [INFO] [stderr] 46 | if *right_ws == Preserve && fix_end { [INFO] [stderr] 47 | *right_ws = if fix_end { Space } else { Strip }; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stderr] --> src/oneline.rs:81:16 [INFO] [stderr] | [INFO] [stderr] 81 | .. body [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/optimize.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | / match (interm.last_mut(), &item) { [INFO] [stderr] 42 | | ( [INFO] [stderr] 43 | | Some(&mut Statement { [INFO] [stderr] 44 | | position: (_, ref mut old_end), [INFO] [stderr] ... | [INFO] [stderr] 56 | | _ => {} [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 41 | if let ( [INFO] [stderr] 42 | Some(&mut Statement { [INFO] [stderr] 43 | position: (_, ref mut old_end), [INFO] [stderr] 44 | code: OutputRaw(ref mut prev), [INFO] [stderr] 45 | }), [INFO] [stderr] 46 | &Statement { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: struct update has no effect, all the fields in the struct have already been specified [INFO] [stderr] --> src/optimize.rs:96:16 [INFO] [stderr] | [INFO] [stderr] 96 | .. body [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_update [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `Options` [INFO] [stderr] --> src/options.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn new() -> Options { [INFO] [stderr] 10 | | Options { [INFO] [stderr] 11 | | syntax: Syntax::Plain, [INFO] [stderr] 12 | | new_line_at_eof: None, [INFO] [stderr] ... | [INFO] [stderr] 18 | | } [INFO] [stderr] 19 | | } [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] 7 | impl Default for Options { [INFO] [stderr] 8 | fn default() -> Self { [INFO] [stderr] 9 | Self::new() [INFO] [stderr] 10 | } [INFO] [stderr] 11 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/preparser.rs:89:70 [INFO] [stderr] | [INFO] [stderr] 89 | if end > 0 && regex[..end].ends_with(" ") { [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/preparser.rs:95:51 [INFO] [stderr] | [INFO] [stderr] 95 | if !regex.starts_with("^") { [INFO] [stderr] | ^^^ help: try using a char instead: `'^'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/preparser.rs:98:49 [INFO] [stderr] | [INFO] [stderr] 98 | if !regex.ends_with("$") { [INFO] [stderr] | ^^^ help: try using a char instead: `'$'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/render.rs:51:12 [INFO] [stderr] | [INFO] [stderr] 51 | if rnd.errors.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!rnd.errors.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: the loop variable `i` is only used to index `vec`. [INFO] [stderr] --> src/render.rs:232:22 [INFO] [stderr] | [INFO] [stderr] 232 | for i in 0..vec.len() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 232 | for in &vec { [INFO] [stderr] | ^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/render.rs:309:1 [INFO] [stderr] | [INFO] [stderr] 309 | / fn write_block<'x, 'render>(r: &mut Renderer, [INFO] [stderr] 310 | | root: &mut SubContext<'x, 'render>, [INFO] [stderr] 311 | | items: &OwningRef>, [Statement]>) [INFO] [stderr] 312 | | -> Result<(), fmt::Error> [INFO] [stderr] ... | [INFO] [stderr] 665 | | Ok(()) [INFO] [stderr] 666 | | } [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: length comparison to zero [INFO] [stderr] --> src/render.rs:342:28 [INFO] [stderr] | [INFO] [stderr] 342 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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/render.rs:354:28 [INFO] [stderr] | [INFO] [stderr] 354 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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/render.rs:359:32 [INFO] [stderr] | [INFO] [stderr] 359 | if r.buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!r.buf.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/render.rs:381:28 [INFO] [stderr] | [INFO] [stderr] 381 | if r.buf.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!r.buf.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/std_vars.rs:24:12 [INFO] [stderr] | [INFO] [stderr] 24 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:42:12 [INFO] [stderr] | [INFO] [stderr] 42 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/std_vars.rs:156:40 [INFO] [stderr] | [INFO] [stderr] 156 | impl<'render, V> Variable<'render> for HashMap [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 156 | impl<'render, V, S: ::std::hash::BuildHasher> Variable<'render> for HashMap [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/std_vars.rs:179:12 [INFO] [stderr] | [INFO] [stderr] 179 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/std_vars.rs:191:53 [INFO] [stderr] | [INFO] [stderr] 191 | impl<'a: 'render, 'render, V> Variable<'render> for HashMap<&'a str, V> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 191 | impl<'a: 'render, 'render, V, S: ::std::hash::BuildHasher> Variable<'render> for HashMap<&'a str, V, S> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/std_vars.rs:214:12 [INFO] [stderr] | [INFO] [stderr] 214 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:249:12 [INFO] [stderr] | [INFO] [stderr] 249 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:284:12 [INFO] [stderr] | [INFO] [stderr] 284 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:301:12 [INFO] [stderr] | [INFO] [stderr] 301 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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: impl for `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/std_vars.rs:319:44 [INFO] [stderr] | [INFO] [stderr] 319 | impl<'a, 'render, T> Variable<'render> for HashSet [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 319 | impl<'a, 'render, T, S: ::std::hash::BuildHasher> Variable<'render> for HashSet [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/std_vars.rs:326:12 [INFO] [stderr] | [INFO] [stderr] 326 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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/std_vars.rs:343:12 [INFO] [stderr] | [INFO] [stderr] 343 | Ok(self.len() > 0) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.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 seem to be trying to match on a boolean expression [INFO] [stderr] --> src/std_vars.rs:358:12 [INFO] [stderr] | [INFO] [stderr] 358 | Ok(match *self { [INFO] [stderr] | ____________^ [INFO] [stderr] 359 | | true => TRUE.into(), [INFO] [stderr] 360 | | false => FALSE.into(), [INFO] [stderr] 361 | | }) [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if *self { TRUE.into() } else { FALSE.into() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_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/box_vars.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 28 | | -> Result<&'x str, DataError> [INFO] [stderr] 29 | | { [INFO] [stderr] 30 | | (**self).as_str_key() [INFO] [stderr] 31 | | } [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/box_vars.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 84 | | -> Result<&'x str, DataError> [INFO] [stderr] 85 | | { [INFO] [stderr] 86 | | (**self).as_str_key() [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/box_vars.rs:139:5 [INFO] [stderr] | [INFO] [stderr] 139 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 140 | | -> Result<&'x str, DataError> [INFO] [stderr] 141 | | { [INFO] [stderr] 142 | | (**self).as_str_key() [INFO] [stderr] 143 | | } [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/box_vars.rs:195:5 [INFO] [stderr] | [INFO] [stderr] 195 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 196 | | -> Result<&'x str, DataError> [INFO] [stderr] 197 | | { [INFO] [stderr] 198 | | (**self).as_str_key() [INFO] [stderr] 199 | | } [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: single-character string constant used as pattern [INFO] [stderr] --> src/tokenizer.rs:111:66 [INFO] [stderr] | [INFO] [stderr] 111 | let end = self.buf[start_off..].find("\n"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tokenizer.rs:114:32 [INFO] [stderr] | [INFO] [stderr] 114 | }).unwrap_or(self.buf.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.buf.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tokenizer.rs:136:70 [INFO] [stderr] | [INFO] [stderr] 136 | let end = self.buf[start_off..].find("\n"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/tokenizer.rs:139:36 [INFO] [stderr] | [INFO] [stderr] 139 | }).unwrap_or(self.buf.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.buf.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tokenizer.rs:180:62 [INFO] [stderr] | [INFO] [stderr] 180 | let end = self.buf[start_off..].find("\n"); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokenizer.rs:289:45 [INFO] [stderr] | [INFO] [stderr] 289 | if kind == Kind::Newline && self.parens.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.parens.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 appear to be counting bytes the naive way [INFO] [stderr] --> src/tokenizer.rs:305:21 [INFO] [stderr] | [INFO] [stderr] 305 | let lines = val.as_bytes().iter().filter(|&&x| x == b'\n').count(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider using the bytecount crate: `bytecount::count(val.as_bytes(), b'\n')` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::naive_bytecount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#naive_bytecount [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `varmap::Context<'render>` [INFO] [stderr] --> src/varmap.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 30 | / pub fn new<'x>() -> Context<'x> { [INFO] [stderr] 31 | | Context { [INFO] [stderr] 32 | | nothing: Rc::new(()), [INFO] [stderr] 33 | | vars: HashMap::new(), [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [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] 28 | impl Default for varmap::Context<'render> { [INFO] [stderr] 29 | fn default() -> Self { [INFO] [stderr] 30 | Self::new() [INFO] [stderr] 31 | } [INFO] [stderr] 32 | } [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/vars.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | / fn as_str_key<'x>(&'x self) -> Result<&'x str, DataError> { [INFO] [stderr] 81 | | Err(DataError::StrKeyUnsupported(self.typename())) [INFO] [stderr] 82 | | } [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/vars.rs:254:5 [INFO] [stderr] | [INFO] [stderr] 254 | / fn as_str_key<'x>(&'x self) [INFO] [stderr] 255 | | -> Result<&'x str, DataError> [INFO] [stderr] 256 | | { [INFO] [stderr] 257 | | self.0.as_str_key() [INFO] [stderr] 258 | | } [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/serde.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / fn as_str_key<'x>(&'x self) -> Result<&'x str, DataError> { [INFO] [stderr] 49 | | use serde_json::Value::*; [INFO] [stderr] 50 | | match *self { [INFO] [stderr] 51 | | String(ref s) => Ok(s), [INFO] [stderr] 52 | | _ => Err(DataError::StrKeyUnsupported(self.typename())), [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [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: length comparison to zero [INFO] [stderr] --> src/serde.rs:128:33 [INFO] [stderr] | [INFO] [stderr] 128 | String(ref s) => Ok(s.len() > 0), [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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/serde.rs:129:32 [INFO] [stderr] | [INFO] [stderr] 129 | Array(ref a) => Ok(a.len() > 0), [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!a.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/serde.rs:130:33 [INFO] [stderr] | [INFO] [stderr] 130 | Object(ref o) => Ok(o.len() > 0), [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!o.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: the loop variable `j` is used to index `b` [INFO] [stderr] --> src/tests/diff.rs:37:22 [INFO] [stderr] | [INFO] [stderr] 37 | for j in 0..b.len() { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 37 | for (j, ) in b.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> benches/swindon_dir.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `trimmer`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error[E0554]: #![feature] may not be used on the stable release channel [INFO] [stderr] --> benches/spitfire.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | #![feature(test)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0554`. [INFO] [stderr] error: Could not compile `trimmer`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bin/trimmer.rs:154:24 [INFO] [stderr] | [INFO] [stderr] 154 | let has_vars = vars.len() > 0 || json_vars.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!vars.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/bin/trimmer.rs:154:42 [INFO] [stderr] | [INFO] [stderr] 154 | let has_vars = vars.len() > 0 || json_vars.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!json_vars.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/bin/trimmer.rs:154:24 [INFO] [stderr] | [INFO] [stderr] 154 | let has_vars = vars.len() > 0 || json_vars.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!vars.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/bin/trimmer.rs:154:42 [INFO] [stderr] | [INFO] [stderr] 154 | let has_vars = vars.len() > 0 || json_vars.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!json_vars.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] error: build failed [INFO] running `"docker" "inspect" "22f15b54df47aa8af256aed6e2175985cf9700d9d1a837257471b4a34be6e31f"` [INFO] running `"docker" "rm" "-f" "22f15b54df47aa8af256aed6e2175985cf9700d9d1a837257471b4a34be6e31f"` [INFO] [stdout] 22f15b54df47aa8af256aed6e2175985cf9700d9d1a837257471b4a34be6e31f