[INFO] crate pvm 0.1.0 is already in cache [INFO] extracting crate pvm 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/pvm/0.1.0 [INFO] extracting crate pvm 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pvm/0.1.0 [INFO] validating manifest of pvm-0.1.0 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 pvm-0.1.0 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 pvm-0.1.0 [INFO] finished frobbing pvm-0.1.0 [INFO] frobbed toml for pvm-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/pvm/0.1.0/Cargo.toml [INFO] started frobbing pvm-0.1.0 [INFO] finished frobbing pvm-0.1.0 [INFO] frobbed toml for pvm-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pvm/0.1.0/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 pvm-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/pvm/0.1.0:/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] 4941f51b0b5bc531f07317fefcb87323f7158fff433e0f0340636c71d03af1f0 [INFO] running `"docker" "start" "-a" "4941f51b0b5bc531f07317fefcb87323f7158fff433e0f0340636c71d03af1f0"` [INFO] [stderr] Checking pvm v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:357:13 [INFO] [stderr] | [INFO] [stderr] 357 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [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/ast.rs:358:13 [INFO] [stderr] | [INFO] [stderr] 358 | rule_names: rule_names, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rule_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/ast.rs:361:13 [INFO] [stderr] | [INFO] [stderr] 361 | jump_table: jump_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jump_table` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/machine.rs:96:63 [INFO] [stderr] | [INFO] [stderr] 96 | PrecedenceBacktrack(ret, a, j, jp, k, f, is_left) => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/machine.rs:190:71 [INFO] [stderr] | [INFO] [stderr] 190 | StackFrame::PrecedenceBacktrack(_, a, j, _, _, _, _) => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/machine.rs:337:13 [INFO] [stderr] | [INFO] [stderr] 337 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:357:13 [INFO] [stderr] | [INFO] [stderr] 357 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [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/ast.rs:358:13 [INFO] [stderr] | [INFO] [stderr] 358 | rule_names: rule_names, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rule_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/ast.rs:361:13 [INFO] [stderr] | [INFO] [stderr] 361 | jump_table: jump_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jump_table` [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] | [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/machine.rs:341:13 [INFO] [stderr] | [INFO] [stderr] 341 | jump_table: jump_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jump_table` [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/machine.rs:365:13 [INFO] [stderr] | [INFO] [stderr] 365 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [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/machine.rs:366:13 [INFO] [stderr] | [INFO] [stderr] 366 | rule_names: rule_names, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rule_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/machine.rs:369:13 [INFO] [stderr] | [INFO] [stderr] 369 | jump_table: jump_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jump_table` [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/machine.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [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/machine.rs:391:13 [INFO] [stderr] | [INFO] [stderr] 391 | rule_names: rule_names, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rule_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/machine.rs:394:13 [INFO] [stderr] | [INFO] [stderr] 394 | jump_table: jump_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jump_table` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/machine.rs:96:63 [INFO] [stderr] | [INFO] [stderr] 96 | PrecedenceBacktrack(ret, a, j, jp, k, f, is_left) => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/machine.rs:190:71 [INFO] [stderr] | [INFO] [stderr] 190 | StackFrame::PrecedenceBacktrack(_, a, j, _, _, _, _) => { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/machine.rs:337:13 [INFO] [stderr] | [INFO] [stderr] 337 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [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/machine.rs:341:13 [INFO] [stderr] | [INFO] [stderr] 341 | jump_table: jump_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jump_table` [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/machine.rs:365:13 [INFO] [stderr] | [INFO] [stderr] 365 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [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/machine.rs:366:13 [INFO] [stderr] | [INFO] [stderr] 366 | rule_names: rule_names, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rule_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/machine.rs:369:13 [INFO] [stderr] | [INFO] [stderr] 369 | jump_table: jump_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jump_table` [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/machine.rs:390:13 [INFO] [stderr] | [INFO] [stderr] 390 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [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/machine.rs:391:13 [INFO] [stderr] | [INFO] [stderr] 391 | rule_names: rule_names, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rule_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/machine.rs:394:13 [INFO] [stderr] | [INFO] [stderr] 394 | jump_table: jump_table, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `jump_table` [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: the variable `id` is used as a loop counter. Consider using `for (id, item) in rules.enumerate()` or similar iterators [INFO] [stderr] --> src/ast.rs:44:25 [INFO] [stderr] | [INFO] [stderr] 44 | for mut rule in rules { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `result` [INFO] [stderr] --> src/ast.rs:54:18 [INFO] [stderr] | [INFO] [stderr] 54 | for i in 0..result.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] 54 | for (i, ) in result.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match p { [INFO] [stderr] 69 | | &Pattern::CharClass(ref data) => Grammar::compile_char_class(data), [INFO] [stderr] 70 | | &Pattern::CharSequence(ref data) => Grammar::compile_char_sequence(data), [INFO] [stderr] 71 | | &Pattern::CharAny => Grammar::compile_char_any(), [INFO] [stderr] ... | [INFO] [stderr] 78 | | &Pattern::Lookahead(flag, ref data) => Grammar::compile_lookahead(flag, data) [INFO] [stderr] 79 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 68 | match *p { [INFO] [stderr] 69 | Pattern::CharClass(ref data) => Grammar::compile_char_class(data), [INFO] [stderr] 70 | Pattern::CharSequence(ref data) => Grammar::compile_char_sequence(data), [INFO] [stderr] 71 | Pattern::CharAny => Grammar::compile_char_any(), [INFO] [stderr] 72 | Pattern::Variable(id, precedence, _, is_left) => Grammar::compile_variable(id, precedence, is_left), [INFO] [stderr] 73 | Pattern::Choice(ref le, ref ri) => Grammar::compile_choice(le, ri), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast.rs:82:34 [INFO] [stderr] | [INFO] [stderr] 82 | fn compile_char_class(data : &Vec<(u8, Option)>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(u8, Option)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast.rs:100:37 [INFO] [stderr] | [INFO] [stderr] 100 | fn compile_char_sequence(data : &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:120:30 [INFO] [stderr] | [INFO] [stderr] 120 | fn compile_choice(left : &Box, right : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:120:53 [INFO] [stderr] | [INFO] [stderr] 120 | fn compile_choice(left : &Box, right : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:131:36 [INFO] [stderr] | [INFO] [stderr] 131 | fn compile_zero_or_more(data : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:141:35 [INFO] [stderr] | [INFO] [stderr] 141 | fn compile_one_or_more(data : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast.rs:153:32 [INFO] [stderr] | [INFO] [stderr] 153 | fn compile_sequence(data : &Vec>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:163:32 [INFO] [stderr] | [INFO] [stderr] 163 | fn compile_optional(data : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:173:49 [INFO] [stderr] | [INFO] [stderr] 173 | fn compile_lookahead(success : bool, data : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:287:9 [INFO] [stderr] | [INFO] [stderr] 287 | / match pattern { [INFO] [stderr] 288 | | &CharClass(_) | &CharSequence(_) | &CharAny => { consumed = true; }, [INFO] [stderr] 289 | | &Variable(r, _, id, _) => { [INFO] [stderr] 290 | | if left_calls.contains(&id) { [INFO] [stderr] ... | [INFO] [stderr] 341 | | } [INFO] [stderr] 342 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 287 | match *pattern { [INFO] [stderr] 288 | CharClass(_) | CharSequence(_) | CharAny => { consumed = true; }, [INFO] [stderr] 289 | Variable(r, _, id, _) => { [INFO] [stderr] 290 | if left_calls.contains(&id) { [INFO] [stderr] 291 | [INFO] [stderr] 292 | } else if right_calls.contains(&id) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/ast.rs:294:27 [INFO] [stderr] | [INFO] [stderr] 294 | } else if stack.iter().find(|&&x| x.0 == id).is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|&&x| x.0 == id).is_some()` with `any(|&&x| x.0 == id)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/ast.rs:297:51 [INFO] [stderr] | [INFO] [stderr] 297 | .skip_while(|x| x.0 != id) [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 298 | | .fold(false, |acc, &x| acc || x.1); [INFO] [stderr] | |__________________________________________________________^ help: try: `.any(|x| x.1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/parser.rs:40:28 [INFO] [stderr] | [INFO] [stderr] 40 | while let Some(item) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for item in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/parser.rs:56:55 [INFO] [stderr] | [INFO] [stderr] 56 | tokens.push(Token::Letter('-' as u8)); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'-' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:76:58 [INFO] [stderr] | [INFO] [stderr] 76 | if !item.is_alphanumeric() && item != '_' && name.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!name.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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/parser.rs:81:33 [INFO] [stderr] | [INFO] [stderr] 81 | let n = (x - b'0') as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i32::from(x - b'0')` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | / if let &Token::Name(id) = token { [INFO] [stderr] 148 | | i += 1; [INFO] [stderr] 149 | | if let Some(brace_token) = tokens.get(i) { [INFO] [stderr] 150 | | i += 1; [INFO] [stderr] ... | [INFO] [stderr] 168 | | return Err(i); [INFO] [stderr] 169 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 147 | if let Token::Name(id) = *token { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:182:46 [INFO] [stderr] | [INFO] [stderr] 182 | fn parse_expression(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:213:44 [INFO] [stderr] | [INFO] [stderr] 213 | fn parse_sequence(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parser.rs:235:53 [INFO] [stderr] | [INFO] [stderr] 235 | let boxed_patterns = patterns.drain(..).map(|x| Box::new(x)).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Box::new` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:242:42 [INFO] [stderr] | [INFO] [stderr] 242 | fn parse_prefix(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:264:42 [INFO] [stderr] | [INFO] [stderr] 264 | fn parse_suffix(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:268:17 [INFO] [stderr] | [INFO] [stderr] 268 | / match token { [INFO] [stderr] 269 | | &Token::Plus => { [INFO] [stderr] 270 | | *i += 1; [INFO] [stderr] 271 | | Ok(ast::Pattern::OneOrMore(Box::new(p))) [INFO] [stderr] ... | [INFO] [stderr] 281 | | _ => Ok(p) [INFO] [stderr] 282 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 268 | match *token { [INFO] [stderr] 269 | Token::Plus => { [INFO] [stderr] 270 | *i += 1; [INFO] [stderr] 271 | Ok(ast::Pattern::OneOrMore(Box::new(p))) [INFO] [stderr] 272 | }, [INFO] [stderr] 273 | Token::Asterik => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:289:43 [INFO] [stderr] | [INFO] [stderr] 289 | fn parse_primary(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:292:9 [INFO] [stderr] | [INFO] [stderr] 292 | / match token { [INFO] [stderr] 293 | | &Token::Name(id) => { [INFO] [stderr] 294 | | *i += 1; [INFO] [stderr] 295 | | if tokens.get(*i) != Some(&Token::OpenBrace) { [INFO] [stderr] ... | [INFO] [stderr] 352 | | _ => Err(*i) [INFO] [stderr] 353 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 292 | match *token { [INFO] [stderr] 293 | Token::Name(id) => { [INFO] [stderr] 294 | *i += 1; [INFO] [stderr] 295 | if tokens.get(*i) != Some(&Token::OpenBrace) { [INFO] [stderr] 296 | if tokens.get(*i) == Some(&Token::Colon) { [INFO] [stderr] 297 | *i += 1; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:359:43 [INFO] [stderr] | [INFO] [stderr] 359 | fn parse_literal(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:364:9 [INFO] [stderr] | [INFO] [stderr] 364 | / match token { [INFO] [stderr] 365 | | &Token::Letter(x) => { [INFO] [stderr] 366 | | *i += 1; [INFO] [stderr] 367 | | letters.push(x); [INFO] [stderr] 368 | | }, [INFO] [stderr] 369 | | _ => break [INFO] [stderr] 370 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 364 | match *token { [INFO] [stderr] 365 | Token::Letter(x) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:387:41 [INFO] [stderr] | [INFO] [stderr] 387 | fn parse_class(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser.rs:394:5 [INFO] [stderr] | [INFO] [stderr] 394 | / loop { [INFO] [stderr] 395 | | let left_letter = match tokens.get(*i) { [INFO] [stderr] 396 | | Some(&Token::Letter(x)) => x, [INFO] [stderr] 397 | | _ => break [INFO] [stderr] ... | [INFO] [stderr] 410 | | ranges.push((left_letter, right_letter)); [INFO] [stderr] 411 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(&Token::Letter(x)) = tokens.get(*i) { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:418:8 [INFO] [stderr] | [INFO] [stderr] 418 | if ranges.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ranges.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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/machine.rs:71:51 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn execute(&mut self, input : Vec) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 35 [INFO] [stderr] --> src/machine.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | / pub fn execute(&mut self, input : Vec) -> Result, Error> { [INFO] [stderr] 72 | | let mut stack = Vec::new(); [INFO] [stderr] 73 | | let mut pos_stack = Vec::new(); [INFO] [stderr] 74 | | let mut result = HashSet::new(); [INFO] [stderr] ... | [INFO] [stderr] 309 | | } [INFO] [stderr] 310 | | } [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/machine.rs:263:29 [INFO] [stderr] | [INFO] [stderr] 263 | / match stack[pos] { [INFO] [stderr] 264 | | StackFrame::Backtrack(p, _) => { [INFO] [stderr] 265 | | stack[pos] = StackFrame::Backtrack(p, i); [INFO] [stderr] 266 | | }, [INFO] [stderr] 267 | | _ => { } [INFO] [stderr] 268 | | } [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] 263 | if let StackFrame::Backtrack(p, _) = stack[pos] { [INFO] [stderr] 264 | stack[pos] = StackFrame::Backtrack(p, i); [INFO] [stderr] 265 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/machine.rs:312:37 [INFO] [stderr] | [INFO] [stderr] 312 | pub fn get_jump_table(program : &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[Instruction]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/machine.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | / match program[i] { [INFO] [stderr] 318 | | Instruction::Return => current = i as isize, [INFO] [stderr] 319 | | _ => { } [INFO] [stderr] 320 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Instruction::Return = program[i] { current = i as isize }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/machine.rs:347:24 [INFO] [stderr] | [INFO] [stderr] 347 | let mut file = File::open(path).ok().expect("rip"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: the variable `id` is used as a loop counter. Consider using `for (id, item) in rules.enumerate()` or similar iterators [INFO] [stderr] --> src/ast.rs:44:25 [INFO] [stderr] | [INFO] [stderr] 44 | for mut rule in rules { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `result` [INFO] [stderr] --> src/ast.rs:54:18 [INFO] [stderr] | [INFO] [stderr] 54 | for i in 0..result.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] 54 | for (i, ) in result.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match p { [INFO] [stderr] 69 | | &Pattern::CharClass(ref data) => Grammar::compile_char_class(data), [INFO] [stderr] 70 | | &Pattern::CharSequence(ref data) => Grammar::compile_char_sequence(data), [INFO] [stderr] 71 | | &Pattern::CharAny => Grammar::compile_char_any(), [INFO] [stderr] ... | [INFO] [stderr] 78 | | &Pattern::Lookahead(flag, ref data) => Grammar::compile_lookahead(flag, data) [INFO] [stderr] 79 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 68 | match *p { [INFO] [stderr] 69 | Pattern::CharClass(ref data) => Grammar::compile_char_class(data), [INFO] [stderr] 70 | Pattern::CharSequence(ref data) => Grammar::compile_char_sequence(data), [INFO] [stderr] 71 | Pattern::CharAny => Grammar::compile_char_any(), [INFO] [stderr] 72 | Pattern::Variable(id, precedence, _, is_left) => Grammar::compile_variable(id, precedence, is_left), [INFO] [stderr] 73 | Pattern::Choice(ref le, ref ri) => Grammar::compile_choice(le, ri), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast.rs:82:34 [INFO] [stderr] | [INFO] [stderr] 82 | fn compile_char_class(data : &Vec<(u8, Option)>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(u8, Option)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast.rs:100:37 [INFO] [stderr] | [INFO] [stderr] 100 | fn compile_char_sequence(data : &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:120:30 [INFO] [stderr] | [INFO] [stderr] 120 | fn compile_choice(left : &Box, right : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:120:53 [INFO] [stderr] | [INFO] [stderr] 120 | fn compile_choice(left : &Box, right : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:131:36 [INFO] [stderr] | [INFO] [stderr] 131 | fn compile_zero_or_more(data : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:141:35 [INFO] [stderr] | [INFO] [stderr] 141 | fn compile_one_or_more(data : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast.rs:153:32 [INFO] [stderr] | [INFO] [stderr] 153 | fn compile_sequence(data : &Vec>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:163:32 [INFO] [stderr] | [INFO] [stderr] 163 | fn compile_optional(data : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/ast.rs:173:49 [INFO] [stderr] | [INFO] [stderr] 173 | fn compile_lookahead(success : bool, data : &Box) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Pattern` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ast.rs:287:9 [INFO] [stderr] | [INFO] [stderr] 287 | / match pattern { [INFO] [stderr] 288 | | &CharClass(_) | &CharSequence(_) | &CharAny => { consumed = true; }, [INFO] [stderr] 289 | | &Variable(r, _, id, _) => { [INFO] [stderr] 290 | | if left_calls.contains(&id) { [INFO] [stderr] ... | [INFO] [stderr] 341 | | } [INFO] [stderr] 342 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 287 | match *pattern { [INFO] [stderr] 288 | CharClass(_) | CharSequence(_) | CharAny => { consumed = true; }, [INFO] [stderr] 289 | Variable(r, _, id, _) => { [INFO] [stderr] 290 | if left_calls.contains(&id) { [INFO] [stderr] 291 | [INFO] [stderr] 292 | } else if right_calls.contains(&id) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/ast.rs:294:27 [INFO] [stderr] | [INFO] [stderr] 294 | } else if stack.iter().find(|&&x| x.0 == id).is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|&&x| x.0 == id).is_some()` with `any(|&&x| x.0 == id)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/ast.rs:297:51 [INFO] [stderr] | [INFO] [stderr] 297 | .skip_while(|x| x.0 != id) [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 298 | | .fold(false, |acc, &x| acc || x.1); [INFO] [stderr] | |__________________________________________________________^ help: try: `.any(|x| x.1)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast.rs:353:56 [INFO] [stderr] | [INFO] [stderr] 353 | fn execute_test(grammar : &mut Grammar, subjects : &Vec<&str>, expected : &Vec, rule_names : Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ast.rs:353:79 [INFO] [stderr] | [INFO] [stderr] 353 | fn execute_test(grammar : &mut Grammar, subjects : &Vec<&str>, expected : &Vec, rule_names : Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[bool]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:383:14 [INFO] [stderr] | [INFO] [stderr] 383 | ('a' as u8, Some('z' as u8)), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:383:30 [INFO] [stderr] | [INFO] [stderr] 383 | ('a' as u8, Some('z' as u8)), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'z' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:384:14 [INFO] [stderr] | [INFO] [stderr] 384 | ('A' as u8, Some('A' as u8)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:384:30 [INFO] [stderr] | [INFO] [stderr] 384 | ('A' as u8, Some('A' as u8)) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'A' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:387:13 [INFO] [stderr] | [INFO] [stderr] 387 | 'a' as u8, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:388:13 [INFO] [stderr] | [INFO] [stderr] 388 | 'b' as u8, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:389:13 [INFO] [stderr] | [INFO] [stderr] 389 | 'c' as u8 [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'c' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:415:49 [INFO] [stderr] | [INFO] [stderr] 415 | Box::new(Pattern::CharSequence(vec!['a' as u8]))); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:417:49 [INFO] [stderr] | [INFO] [stderr] 417 | Box::new(Pattern::CharSequence(vec!['a' as u8]))); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:445:53 [INFO] [stderr] | [INFO] [stderr] 445 | Box::new(Pattern::CharSequence(vec!['a' as u8])) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:448:53 [INFO] [stderr] | [INFO] [stderr] 448 | Box::new(Pattern::CharSequence(vec!['b' as u8])) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:471:49 [INFO] [stderr] | [INFO] [stderr] 471 | Box::new(Pattern::CharSequence(vec!['a' as u8]))); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/ast.rs:474:49 [INFO] [stderr] | [INFO] [stderr] 474 | Box::new(Pattern::CharSequence(vec!['b' as u8])) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/parser.rs:40:28 [INFO] [stderr] | [INFO] [stderr] 40 | while let Some(item) = iterator.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `for item in iterator { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/parser.rs:56:55 [INFO] [stderr] | [INFO] [stderr] 56 | tokens.push(Token::Letter('-' as u8)); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'-' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:76:58 [INFO] [stderr] | [INFO] [stderr] 76 | if !item.is_alphanumeric() && item != '_' && name.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!name.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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/parser.rs:81:33 [INFO] [stderr] | [INFO] [stderr] 81 | let n = (x - b'0') as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i32::from(x - b'0')` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | / if let &Token::Name(id) = token { [INFO] [stderr] 148 | | i += 1; [INFO] [stderr] 149 | | if let Some(brace_token) = tokens.get(i) { [INFO] [stderr] 150 | | i += 1; [INFO] [stderr] ... | [INFO] [stderr] 168 | | return Err(i); [INFO] [stderr] 169 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 147 | if let Token::Name(id) = *token { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:182:46 [INFO] [stderr] | [INFO] [stderr] 182 | fn parse_expression(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:213:44 [INFO] [stderr] | [INFO] [stderr] 213 | fn parse_sequence(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/parser.rs:235:53 [INFO] [stderr] | [INFO] [stderr] 235 | let boxed_patterns = patterns.drain(..).map(|x| Box::new(x)).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Box::new` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:242:42 [INFO] [stderr] | [INFO] [stderr] 242 | fn parse_prefix(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:264:42 [INFO] [stderr] | [INFO] [stderr] 264 | fn parse_suffix(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:268:17 [INFO] [stderr] | [INFO] [stderr] 268 | / match token { [INFO] [stderr] 269 | | &Token::Plus => { [INFO] [stderr] 270 | | *i += 1; [INFO] [stderr] 271 | | Ok(ast::Pattern::OneOrMore(Box::new(p))) [INFO] [stderr] ... | [INFO] [stderr] 281 | | _ => Ok(p) [INFO] [stderr] 282 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 268 | match *token { [INFO] [stderr] 269 | Token::Plus => { [INFO] [stderr] 270 | *i += 1; [INFO] [stderr] 271 | Ok(ast::Pattern::OneOrMore(Box::new(p))) [INFO] [stderr] 272 | }, [INFO] [stderr] 273 | Token::Asterik => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:289:43 [INFO] [stderr] | [INFO] [stderr] 289 | fn parse_primary(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:292:9 [INFO] [stderr] | [INFO] [stderr] 292 | / match token { [INFO] [stderr] 293 | | &Token::Name(id) => { [INFO] [stderr] 294 | | *i += 1; [INFO] [stderr] 295 | | if tokens.get(*i) != Some(&Token::OpenBrace) { [INFO] [stderr] ... | [INFO] [stderr] 352 | | _ => Err(*i) [INFO] [stderr] 353 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 292 | match *token { [INFO] [stderr] 293 | Token::Name(id) => { [INFO] [stderr] 294 | *i += 1; [INFO] [stderr] 295 | if tokens.get(*i) != Some(&Token::OpenBrace) { [INFO] [stderr] 296 | if tokens.get(*i) == Some(&Token::Colon) { [INFO] [stderr] 297 | *i += 1; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:359:43 [INFO] [stderr] | [INFO] [stderr] 359 | fn parse_literal(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:364:9 [INFO] [stderr] | [INFO] [stderr] 364 | / match token { [INFO] [stderr] 365 | | &Token::Letter(x) => { [INFO] [stderr] 366 | | *i += 1; [INFO] [stderr] 367 | | letters.push(x); [INFO] [stderr] 368 | | }, [INFO] [stderr] 369 | | _ => break [INFO] [stderr] 370 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 364 | match *token { [INFO] [stderr] 365 | Token::Letter(x) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:387:41 [INFO] [stderr] | [INFO] [stderr] 387 | fn parse_class(i : &mut usize, tokens : &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parser.rs:394:5 [INFO] [stderr] | [INFO] [stderr] 394 | / loop { [INFO] [stderr] 395 | | let left_letter = match tokens.get(*i) { [INFO] [stderr] 396 | | Some(&Token::Letter(x)) => x, [INFO] [stderr] 397 | | _ => break [INFO] [stderr] ... | [INFO] [stderr] 410 | | ranges.push((left_letter, right_letter)); [INFO] [stderr] 411 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(&Token::Letter(x)) = tokens.get(*i) { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser.rs:418:8 [INFO] [stderr] | [INFO] [stderr] 418 | if ranges.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ranges.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:430:48 [INFO] [stderr] | [INFO] [stderr] 430 | fn execute_test(grammar : &str, subjects : &Vec<&str>, expected : &Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:430:71 [INFO] [stderr] | [INFO] [stderr] 430 | fn execute_test(grammar : &str, subjects : &Vec<&str>, expected : &Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[bool]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/machine.rs:71:51 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn execute(&mut self, input : Vec) -> Result, Error> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 35 [INFO] [stderr] --> src/machine.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | / pub fn execute(&mut self, input : Vec) -> Result, Error> { [INFO] [stderr] 72 | | let mut stack = Vec::new(); [INFO] [stderr] 73 | | let mut pos_stack = Vec::new(); [INFO] [stderr] 74 | | let mut result = HashSet::new(); [INFO] [stderr] ... | [INFO] [stderr] 309 | | } [INFO] [stderr] 310 | | } [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/machine.rs:263:29 [INFO] [stderr] | [INFO] [stderr] 263 | / match stack[pos] { [INFO] [stderr] 264 | | StackFrame::Backtrack(p, _) => { [INFO] [stderr] 265 | | stack[pos] = StackFrame::Backtrack(p, i); [INFO] [stderr] 266 | | }, [INFO] [stderr] 267 | | _ => { } [INFO] [stderr] 268 | | } [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] 263 | if let StackFrame::Backtrack(p, _) = stack[pos] { [INFO] [stderr] 264 | stack[pos] = StackFrame::Backtrack(p, i); [INFO] [stderr] 265 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/machine.rs:312:37 [INFO] [stderr] | [INFO] [stderr] 312 | pub fn get_jump_table(program : &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[Instruction]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/machine.rs:317:13 [INFO] [stderr] | [INFO] [stderr] 317 | / match program[i] { [INFO] [stderr] 318 | | Instruction::Return => current = i as isize, [INFO] [stderr] 319 | | _ => { } [INFO] [stderr] 320 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Instruction::Return = program[i] { current = i as isize }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/machine.rs:347:24 [INFO] [stderr] | [INFO] [stderr] 347 | let mut file = File::open(path).ok().expect("rip"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/machine.rs:359:20 [INFO] [stderr] | [INFO] [stderr] 359 | subjects : &Vec<&str>, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/machine.rs:360:20 [INFO] [stderr] | [INFO] [stderr] 360 | expected : &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[bool]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/machine.rs:384:20 [INFO] [stderr] | [INFO] [stderr] 384 | subjects : &Vec<&str>, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/machine.rs:385:20 [INFO] [stderr] | [INFO] [stderr] 385 | expected : &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[bool]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:411:31 [INFO] [stderr] | [INFO] [stderr] 411 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:423:31 [INFO] [stderr] | [INFO] [stderr] 423 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:435:31 [INFO] [stderr] | [INFO] [stderr] 435 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:437:31 [INFO] [stderr] | [INFO] [stderr] 437 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:449:31 [INFO] [stderr] | [INFO] [stderr] 449 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:450:31 [INFO] [stderr] | [INFO] [stderr] 450 | Instruction::Char('b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:463:31 [INFO] [stderr] | [INFO] [stderr] 463 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:465:31 [INFO] [stderr] | [INFO] [stderr] 465 | Instruction::Char('b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:467:31 [INFO] [stderr] | [INFO] [stderr] 467 | Instruction::Char('c' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'c' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:478:31 [INFO] [stderr] | [INFO] [stderr] 478 | Instruction::Char('a' as u8), //-- main [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:484:31 [INFO] [stderr] | [INFO] [stderr] 484 | Instruction::Char('b' as u8), //-- b [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:490:31 [INFO] [stderr] | [INFO] [stderr] 490 | Instruction::Char('b' as u8), // -- b [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:492:31 [INFO] [stderr] | [INFO] [stderr] 492 | Instruction::Char('a' as u8), // -- main [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:518:31 [INFO] [stderr] | [INFO] [stderr] 518 | Instruction::Char('a' as u8), // | [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:520:31 [INFO] [stderr] | [INFO] [stderr] 520 | Instruction::Char('z' as u8), // | [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'z' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:523:31 [INFO] [stderr] | [INFO] [stderr] 523 | Instruction::Char('b' as u8), // | [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:551:31 [INFO] [stderr] | [INFO] [stderr] 551 | Instruction::Char('b' as u8), // -- b [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:554:31 [INFO] [stderr] | [INFO] [stderr] 554 | Instruction::Char('a' as u8), // -- main [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:571:31 [INFO] [stderr] | [INFO] [stderr] 571 | Instruction::Char('b' as u8), // | [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:575:31 [INFO] [stderr] | [INFO] [stderr] 575 | Instruction::Char('a' as u8), // | [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:596:36 [INFO] [stderr] | [INFO] [stderr] 596 | Instruction::CharRange('a' as u8, 'z' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:596:47 [INFO] [stderr] | [INFO] [stderr] 596 | Instruction::CharRange('a' as u8, 'z' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'z' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:611:40 [INFO] [stderr] | [INFO] [stderr] 611 | Instruction::CharRangeLink('a' as u8, 'b' as u8, 3), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:611:51 [INFO] [stderr] | [INFO] [stderr] 611 | Instruction::CharRangeLink('a' as u8, 'b' as u8, 3), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:612:40 [INFO] [stderr] | [INFO] [stderr] 612 | Instruction::CharRangeLink('c' as u8, 'c' as u8, 2), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'c' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:612:51 [INFO] [stderr] | [INFO] [stderr] 612 | Instruction::CharRangeLink('c' as u8, 'c' as u8, 2), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'c' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:613:36 [INFO] [stderr] | [INFO] [stderr] 613 | Instruction::CharRange('e' as u8, 'e' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'e' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:613:47 [INFO] [stderr] | [INFO] [stderr] 613 | Instruction::CharRange('e' as u8, 'e' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'e' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:628:31 [INFO] [stderr] | [INFO] [stderr] 628 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:629:31 [INFO] [stderr] | [INFO] [stderr] 629 | Instruction::Char('b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:633:26 [INFO] [stderr] | [INFO] [stderr] 633 | let skip = vec![(' ' as u8, ' ' as u8)]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:633:37 [INFO] [stderr] | [INFO] [stderr] 633 | let skip = vec![(' ' as u8, ' ' as u8)]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:645:31 [INFO] [stderr] | [INFO] [stderr] 645 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:646:31 [INFO] [stderr] | [INFO] [stderr] 646 | Instruction::Char(' ' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:648:31 [INFO] [stderr] | [INFO] [stderr] 648 | Instruction::Char('b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:651:26 [INFO] [stderr] | [INFO] [stderr] 651 | let skip = vec![(' ' as u8, ' ' as u8)]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:651:37 [INFO] [stderr] | [INFO] [stderr] 651 | let skip = vec![(' ' as u8, ' ' as u8)]; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:663:31 [INFO] [stderr] | [INFO] [stderr] 663 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:678:31 [INFO] [stderr] | [INFO] [stderr] 678 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:680:36 [INFO] [stderr] | [INFO] [stderr] 680 | Instruction::CharRange('a' as u8, 'b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:680:47 [INFO] [stderr] | [INFO] [stderr] 680 | Instruction::CharRange('a' as u8, 'b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:682:36 [INFO] [stderr] | [INFO] [stderr] 682 | Instruction::CharRange('a' as u8, 'b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:682:47 [INFO] [stderr] | [INFO] [stderr] 682 | Instruction::CharRange('a' as u8, 'b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:698:31 [INFO] [stderr] | [INFO] [stderr] 698 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:701:36 [INFO] [stderr] | [INFO] [stderr] 701 | Instruction::CharRange('a' as u8, 'b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:701:47 [INFO] [stderr] | [INFO] [stderr] 701 | Instruction::CharRange('a' as u8, 'b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:703:36 [INFO] [stderr] | [INFO] [stderr] 703 | Instruction::CharRange('a' as u8, 'b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:703:47 [INFO] [stderr] | [INFO] [stderr] 703 | Instruction::CharRange('a' as u8, 'b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:718:31 [INFO] [stderr] | [INFO] [stderr] 718 | Instruction::Char('a' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/machine.rs:720:31 [INFO] [stderr] | [INFO] [stderr] 720 | Instruction::Char('b' as u8), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'b' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:12:48 [INFO] [stderr] | [INFO] [stderr] 12 | fn execute_test(grammar : &str, subjects : &Vec<&str>, expected : &Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:12:71 [INFO] [stderr] | [INFO] [stderr] 12 | fn execute_test(grammar : &str, subjects : &Vec<&str>, expected : &Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[bool]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/simple.rs:6:44 [INFO] [stderr] | [INFO] [stderr] 6 | fn execute_test(grammar : &str, subjects : &Vec<&str>, expected : &Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/simple.rs:6:67 [INFO] [stderr] | [INFO] [stderr] 6 | fn execute_test(grammar : &str, subjects : &Vec<&str>, expected : &Vec) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[bool]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> tests/calculator1.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/calculator1.rs:204:24 [INFO] [stderr] | [INFO] [stderr] 204 | Syntax::Number(10000000f64), [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `10_000_000f64` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> tests/calculator1.rs:47:22 [INFO] [stderr] | [INFO] [stderr] 47 | fn order_rule(left : &Rules, right : &Rules) -> Ordering { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Rules` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> tests/calculator1.rs:47:38 [INFO] [stderr] | [INFO] [stderr] 47 | fn order_rule(left : &Rules, right : &Rules) -> Ordering { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Rules` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> tests/calculator1.rs:133:22 [INFO] [stderr] | [INFO] [stderr] 133 | let nested = data[index + 1].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `data[index + 1]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> tests/calculator1.rs:137:26 [INFO] [stderr] | [INFO] [stderr] 137 | let op = data[left.1].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `data[left.1]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> tests/calculator1.rs:157:30 [INFO] [stderr] | [INFO] [stderr] 157 | let number = slice.trim().parse().ok().expect("Parse failed to be a number."); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> tests/calculator1.rs:186:21 [INFO] [stderr] | [INFO] [stderr] 186 | assert_eq!(new_eval, old_eval); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> tests/calculator1.rs:186:21 [INFO] [stderr] | [INFO] [stderr] 186 | assert_eq!(new_eval, old_eval); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `pvm`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "4941f51b0b5bc531f07317fefcb87323f7158fff433e0f0340636c71d03af1f0"` [INFO] running `"docker" "rm" "-f" "4941f51b0b5bc531f07317fefcb87323f7158fff433e0f0340636c71d03af1f0"` [INFO] [stdout] 4941f51b0b5bc531f07317fefcb87323f7158fff433e0f0340636c71d03af1f0