[INFO] crate hime_redist 3.4.0 is already in cache [INFO] extracting crate hime_redist 3.4.0 into work/ex/clippy-test-run/sources/stable/reg/hime_redist/3.4.0 [INFO] extracting crate hime_redist 3.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hime_redist/3.4.0 [INFO] validating manifest of hime_redist-3.4.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 hime_redist-3.4.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 hime_redist-3.4.0 [INFO] finished frobbing hime_redist-3.4.0 [INFO] frobbed toml for hime_redist-3.4.0 written to work/ex/clippy-test-run/sources/stable/reg/hime_redist/3.4.0/Cargo.toml [INFO] started frobbing hime_redist-3.4.0 [INFO] finished frobbing hime_redist-3.4.0 [INFO] frobbed toml for hime_redist-3.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hime_redist/3.4.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 hime_redist-3.4.0 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hime_redist/3.4.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 -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] caefc7e6a0eb455b43135212200e4dbe6b1797caefb7289571359628d8457d1b [INFO] running `"docker" "start" "-a" "caefc7e6a0eb455b43135212200e4dbe6b1797caefb7289571359628d8457d1b"` [INFO] [stderr] Checking hime_redist v3.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/text.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | return self.get_context_for(position, span.length); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.get_context_for(position, span.length)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:346:32 [INFO] [stderr] | [INFO] [stderr] 346 | ((b0 as u32) & 0b00000111) << 18 | ((others[0] as u32) & 0b00111111) << 12 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0111` [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: long literal lacking separators [INFO] [stderr] --> src/text.rs:346:74 [INFO] [stderr] | [INFO] [stderr] 346 | ((b0 as u32) & 0b00000111) << 18 | ((others[0] as u32) & 0b00111111) << 12 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:347:45 [INFO] [stderr] | [INFO] [stderr] 347 | | ((others[1] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:348:45 [INFO] [stderr] | [INFO] [stderr] 348 | | ((others[2] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:356:32 [INFO] [stderr] | [INFO] [stderr] 356 | ((b0 as u32) & 0b00001111) << 12 | ((others[0] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:356:74 [INFO] [stderr] | [INFO] [stderr] 356 | ((b0 as u32) & 0b00001111) << 12 | ((others[0] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:357:45 [INFO] [stderr] | [INFO] [stderr] 357 | | ((others[1] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:364:32 [INFO] [stderr] | [INFO] [stderr] 364 | ((b0 as u32) & 0b00011111) << 6 | ((bytes[0] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0001_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:364:72 [INFO] [stderr] | [INFO] [stderr] 364 | ((b0 as u32) & 0b00011111) << 6 | ((bytes[0] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:377:48 [INFO] [stderr] | [INFO] [stderr] 377 | if (c >= 0xD800 && c < 0xE000) || c >= 0x110000 { [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0011_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/text.rs:448:5 [INFO] [stderr] | [INFO] [stderr] 448 | return lines.len() - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `lines.len() - 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/errors.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | *(&self.position) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `self.position` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/errors.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | *(&self.position) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `self.position` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/errors.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | *(&self.position) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `self.position` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/errors.rs:201:9 [INFO] [stderr] | [INFO] [stderr] 201 | *(&self.position) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `self.position` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexers/automaton.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | return DEAD_STATE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `DEAD_STATE` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/ast.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | (self.data & 0x3FFFFFFF) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x3FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/text.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | return self.get_context_for(position, span.length); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.get_context_for(position, span.length)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:346:32 [INFO] [stderr] | [INFO] [stderr] 346 | ((b0 as u32) & 0b00000111) << 18 | ((others[0] as u32) & 0b00111111) << 12 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0111` [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: long literal lacking separators [INFO] [stderr] --> src/text.rs:346:74 [INFO] [stderr] | [INFO] [stderr] 346 | ((b0 as u32) & 0b00000111) << 18 | ((others[0] as u32) & 0b00111111) << 12 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:347:45 [INFO] [stderr] | [INFO] [stderr] 347 | | ((others[1] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:348:45 [INFO] [stderr] | [INFO] [stderr] 348 | | ((others[2] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:356:32 [INFO] [stderr] | [INFO] [stderr] 356 | ((b0 as u32) & 0b00001111) << 12 | ((others[0] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:356:74 [INFO] [stderr] | [INFO] [stderr] 356 | ((b0 as u32) & 0b00001111) << 12 | ((others[0] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:357:45 [INFO] [stderr] | [INFO] [stderr] 357 | | ((others[1] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:364:32 [INFO] [stderr] | [INFO] [stderr] 364 | ((b0 as u32) & 0b00011111) << 6 | ((bytes[0] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0001_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:364:72 [INFO] [stderr] | [INFO] [stderr] 364 | ((b0 as u32) & 0b00011111) << 6 | ((bytes[0] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_1111` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/text.rs:377:48 [INFO] [stderr] | [INFO] [stderr] 377 | if (c >= 0xD800 && c < 0xE000) || c >= 0x110000 { [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0011_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/text.rs:448:5 [INFO] [stderr] | [INFO] [stderr] 448 | return lines.len() - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `lines.len() - 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/errors.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | *(&self.position) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `self.position` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/errors.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | *(&self.position) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `self.position` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/errors.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | *(&self.position) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `self.position` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/errors.rs:201:9 [INFO] [stderr] | [INFO] [stderr] 201 | *(&self.position) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `self.position` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexers/automaton.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | return DEAD_STATE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `DEAD_STATE` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parsers/rnglr.rs:691:16 [INFO] [stderr] | [INFO] [stderr] 691 | sppf_node: 0xFFFFFFFF, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parsers/rnglr.rs:1250:42 [INFO] [stderr] | [INFO] [stderr] 1250 | productions.push(0xFFFFFFFF); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [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 if statement can be collapsed [INFO] [stderr] --> src/parsers/rnglr.rs:1258:21 [INFO] [stderr] | [INFO] [stderr] 1258 | / if contexts.opens(self.get_next_token_id(), context) { [INFO] [stderr] 1259 | | if production.reduction_length == 0 { [INFO] [stderr] 1260 | | // the reduction does not close the context [INFO] [stderr] 1261 | | found_on_previous_shift = true; [INFO] [stderr] 1262 | | break; [INFO] [stderr] 1263 | | } [INFO] [stderr] 1264 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1258 | if contexts.opens(self.get_next_token_id(), context) && production.reduction_length == 0 { [INFO] [stderr] 1259 | // the reduction does not close the context [INFO] [stderr] 1260 | found_on_previous_shift = true; [INFO] [stderr] 1261 | break; [INFO] [stderr] 1262 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parsers/rnglr.rs:1296:38 [INFO] [stderr] | [INFO] [stderr] 1296 | if production == 0xFFFFFFFF { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parsers/rnglr.rs:1519:9 [INFO] [stderr] | [INFO] [stderr] 1519 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parsers/rnglr.rs:1651:28 [INFO] [stderr] | [INFO] [stderr] 1651 | nullables.push(0xFFFFFFFF); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/ast.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | (self.data & 0x3FFFFFFF) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x3FFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parsers/mod.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parsers/rnglr.rs:691:16 [INFO] [stderr] | [INFO] [stderr] 691 | sppf_node: 0xFFFFFFFF, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parsers/rnglr.rs:1250:42 [INFO] [stderr] | [INFO] [stderr] 1250 | productions.push(0xFFFFFFFF); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [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 if statement can be collapsed [INFO] [stderr] --> src/parsers/rnglr.rs:1258:21 [INFO] [stderr] | [INFO] [stderr] 1258 | / if contexts.opens(self.get_next_token_id(), context) { [INFO] [stderr] 1259 | | if production.reduction_length == 0 { [INFO] [stderr] 1260 | | // the reduction does not close the context [INFO] [stderr] 1261 | | found_on_previous_shift = true; [INFO] [stderr] 1262 | | break; [INFO] [stderr] 1263 | | } [INFO] [stderr] 1264 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1258 | if contexts.opens(self.get_next_token_id(), context) && production.reduction_length == 0 { [INFO] [stderr] 1259 | // the reduction does not close the context [INFO] [stderr] 1260 | found_on_previous_shift = true; [INFO] [stderr] 1261 | break; [INFO] [stderr] 1262 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parsers/rnglr.rs:1296:38 [INFO] [stderr] | [INFO] [stderr] 1296 | if production == 0xFFFFFFFF { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parsers/rnglr.rs:1519:9 [INFO] [stderr] | [INFO] [stderr] 1519 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/parsers/rnglr.rs:1651:28 [INFO] [stderr] | [INFO] [stderr] 1651 | nullables.push(0xFFFFFFFF); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parsers/mod.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: item `utils::biglist::BigList` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/utils/biglist.rs:47:1 [INFO] [stderr] | [INFO] [stderr] 47 | / impl BigList { [INFO] [stderr] 48 | | /// Creates a (empty) list [INFO] [stderr] 49 | | pub fn new(neutral: T) -> BigList { [INFO] [stderr] 50 | | let mut my_chunks = Vec::<[T; CHUNKS_SIZE]>::with_capacity(INIT_CHUNK_COUNT); [INFO] [stderr] ... | [INFO] [stderr] 84 | | } [INFO] [stderr] 85 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/utils/biglist.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | self.cell_index = self.cell_index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cell_index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/utils/biglist.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | self.chunk_index = self.chunk_index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.chunk_index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/utils/biglist.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: item `utils::biglist::BigList` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/utils/biglist.rs:47:1 [INFO] [stderr] | [INFO] [stderr] 47 | / impl BigList { [INFO] [stderr] 48 | | /// Creates a (empty) list [INFO] [stderr] 49 | | pub fn new(neutral: T) -> BigList { [INFO] [stderr] 50 | | let mut my_chunks = Vec::<[T; CHUNKS_SIZE]>::with_capacity(INIT_CHUNK_COUNT); [INFO] [stderr] ... | [INFO] [stderr] 84 | | } [INFO] [stderr] 85 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/utils/biglist.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | self.cell_index = self.cell_index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cell_index += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/utils/biglist.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | self.chunk_index = self.chunk_index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.chunk_index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:22:6 [INFO] [stderr] | [INFO] [stderr] 22 | ((buffer[index + 1] as u16) << 8 | (buffer[index] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(buffer[index + 1])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/utils/biglist.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:22:40 [INFO] [stderr] | [INFO] [stderr] 22 | ((buffer[index + 1] as u16) << 8 | (buffer[index] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(buffer[index])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:27:6 [INFO] [stderr] | [INFO] [stderr] 27 | ((buffer[index + 3] as u32) << 24 | (buffer[index + 2] as u32) << 16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[index + 3])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:27:41 [INFO] [stderr] | [INFO] [stderr] 27 | ((buffer[index + 3] as u32) << 24 | (buffer[index + 2] as u32) << 16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[index + 2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:28:11 [INFO] [stderr] | [INFO] [stderr] 28 | | (buffer[index + 1] as u32) << 8 | (buffer[index] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[index + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:28:45 [INFO] [stderr] | [INFO] [stderr] 28 | | (buffer[index + 1] as u32) << 8 | (buffer[index] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[index])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:22:6 [INFO] [stderr] | [INFO] [stderr] 22 | ((buffer[index + 1] as u16) << 8 | (buffer[index] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(buffer[index + 1])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:22:40 [INFO] [stderr] | [INFO] [stderr] 22 | ((buffer[index + 1] as u16) << 8 | (buffer[index] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(buffer[index])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:27:6 [INFO] [stderr] | [INFO] [stderr] 27 | ((buffer[index + 3] as u32) << 24 | (buffer[index + 2] as u32) << 16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[index + 3])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:27:41 [INFO] [stderr] | [INFO] [stderr] 27 | ((buffer[index + 3] as u32) << 24 | (buffer[index + 2] as u32) << 16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[index + 2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:28:11 [INFO] [stderr] | [INFO] [stderr] 28 | | (buffer[index + 1] as u32) << 8 | (buffer[index] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[index + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/bin.rs:28:45 [INFO] [stderr] | [INFO] [stderr] 28 | | (buffer[index + 1] as u32) << 8 | (buffer[index] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(buffer[index])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/utils/mod.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | / match self { [INFO] [stderr] 36 | | &mut EitherMut::Mutable(ref mut data) => Some(data), [INFO] [stderr] 37 | | &mut EitherMut::Immutable(ref _data) => None [INFO] [stderr] 38 | | } [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] 35 | match *self { [INFO] [stderr] 36 | EitherMut::Mutable(ref mut data) => Some(data), [INFO] [stderr] 37 | EitherMut::Immutable(ref _data) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/utils/mod.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / match self { [INFO] [stderr] 44 | | &EitherMut::Mutable(ref data) => data, [INFO] [stderr] 45 | | &EitherMut::Immutable(ref data) => data [INFO] [stderr] 46 | | } [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] 43 | match *self { [INFO] [stderr] 44 | EitherMut::Mutable(ref data) => data, [INFO] [stderr] 45 | EitherMut::Immutable(ref data) => data [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/utils/mod.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | / match self { [INFO] [stderr] 36 | | &mut EitherMut::Mutable(ref mut data) => Some(data), [INFO] [stderr] 37 | | &mut EitherMut::Immutable(ref _data) => None [INFO] [stderr] 38 | | } [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] 35 | match *self { [INFO] [stderr] 36 | EitherMut::Mutable(ref mut data) => Some(data), [INFO] [stderr] 37 | EitherMut::Immutable(ref _data) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/utils/mod.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | / match self { [INFO] [stderr] 44 | | &EitherMut::Mutable(ref data) => data, [INFO] [stderr] 45 | | &EitherMut::Immutable(ref data) => data [INFO] [stderr] 46 | | } [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] 43 | match *self { [INFO] [stderr] 44 | EitherMut::Mutable(ref data) => data, [INFO] [stderr] 45 | EitherMut::Immutable(ref data) => data [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `text::Text` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/text.rs:104:1 [INFO] [stderr] | [INFO] [stderr] 104 | / impl Text { [INFO] [stderr] 105 | | /// Initializes this text [INFO] [stderr] 106 | | pub fn new(input: &str) -> Text { [INFO] [stderr] 107 | | let mut content = BigList::::new(0); [INFO] [stderr] ... | [INFO] [stderr] 265 | | } [INFO] [stderr] 266 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: item `text::Text` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/text.rs:104:1 [INFO] [stderr] | [INFO] [stderr] 104 | / impl Text { [INFO] [stderr] 105 | | /// Initializes this text [INFO] [stderr] 106 | | pub fn new(input: &str) -> Text { [INFO] [stderr] 107 | | let mut content = BigList::::new(0); [INFO] [stderr] ... | [INFO] [stderr] 265 | | } [INFO] [stderr] 266 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/text.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | end = end - 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `end -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/text.rs:235:13 [INFO] [stderr] | [INFO] [stderr] 235 | start = start + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `start += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:287:18 [INFO] [stderr] | [INFO] [stderr] 287 | Some((bytes[1] as u16) << 8 | (bytes[0] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(bytes[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:287:43 [INFO] [stderr] | [INFO] [stderr] 287 | Some((bytes[1] as u16) << 8 | (bytes[0] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(bytes[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:289:18 [INFO] [stderr] | [INFO] [stderr] 289 | Some((bytes[0] as u16) << 8 | (bytes[1] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(bytes[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:289:43 [INFO] [stderr] | [INFO] [stderr] 289 | Some((bytes[0] as u16) << 8 | (bytes[1] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(bytes[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/text.rs:231:13 [INFO] [stderr] | [INFO] [stderr] 231 | end = end - 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `end -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:346:18 [INFO] [stderr] | [INFO] [stderr] 346 | ((b0 as u32) & 0b00000111) << 18 | ((others[0] as u32) & 0b00111111) << 12 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(b0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:346:53 [INFO] [stderr] | [INFO] [stderr] 346 | ((b0 as u32) & 0b00000111) << 18 | ((others[0] as u32) & 0b00111111) << 12 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:347:24 [INFO] [stderr] | [INFO] [stderr] 347 | | ((others[1] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:348:24 [INFO] [stderr] | [INFO] [stderr] 348 | | ((others[2] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:356:18 [INFO] [stderr] | [INFO] [stderr] 356 | ((b0 as u32) & 0b00001111) << 12 | ((others[0] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(b0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:356:53 [INFO] [stderr] | [INFO] [stderr] 356 | ((b0 as u32) & 0b00001111) << 12 | ((others[0] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:357:24 [INFO] [stderr] | [INFO] [stderr] 357 | | ((others[1] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:364:18 [INFO] [stderr] | [INFO] [stderr] 364 | ((b0 as u32) & 0b00011111) << 6 | ((bytes[0] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(b0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:364:52 [INFO] [stderr] | [INFO] [stderr] 364 | ((b0 as u32) & 0b00011111) << 6 | ((bytes[0] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:368:17 [INFO] [stderr] | [INFO] [stderr] 368 | b0 as u32 [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(b0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/text.rs:235:13 [INFO] [stderr] | [INFO] [stderr] 235 | start = start + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `start += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:287:18 [INFO] [stderr] | [INFO] [stderr] 287 | Some((bytes[1] as u16) << 8 | (bytes[0] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(bytes[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:287:43 [INFO] [stderr] | [INFO] [stderr] 287 | Some((bytes[1] as u16) << 8 | (bytes[0] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(bytes[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:289:18 [INFO] [stderr] | [INFO] [stderr] 289 | Some((bytes[0] as u16) << 8 | (bytes[1] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(bytes[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:289:43 [INFO] [stderr] | [INFO] [stderr] 289 | Some((bytes[0] as u16) << 8 | (bytes[1] as u16)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(bytes[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:346:18 [INFO] [stderr] | [INFO] [stderr] 346 | ((b0 as u32) & 0b00000111) << 18 | ((others[0] as u32) & 0b00111111) << 12 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(b0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/text.rs:436:9 [INFO] [stderr] | [INFO] [stderr] 436 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:346:53 [INFO] [stderr] | [INFO] [stderr] 346 | ((b0 as u32) & 0b00000111) << 18 | ((others[0] as u32) & 0b00111111) << 12 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:347:24 [INFO] [stderr] | [INFO] [stderr] 347 | | ((others[1] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/text.rs:442:24 [INFO] [stderr] | [INFO] [stderr] 442 | fn find_line_at(lines: &Vec, index: usize) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:348:24 [INFO] [stderr] | [INFO] [stderr] 348 | | ((others[2] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[2])` [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:356:18 [INFO] [stderr] | [INFO] [stderr] 356 | ((b0 as u32) & 0b00001111) << 12 | ((others[0] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(b0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:356:53 [INFO] [stderr] | [INFO] [stderr] 356 | ((b0 as u32) & 0b00001111) << 12 | ((others[0] as u32) & 0b00111111) << 6 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:357:24 [INFO] [stderr] | [INFO] [stderr] 357 | | ((others[1] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(others[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `lines` [INFO] [stderr] --> src/text.rs:443:14 [INFO] [stderr] | [INFO] [stderr] 443 | for i in 1..lines.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] 443 | for (i, ) in lines.iter().enumerate().skip(1) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:364:18 [INFO] [stderr] | [INFO] [stderr] 364 | ((b0 as u32) & 0b00011111) << 6 | ((bytes[0] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(b0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:364:52 [INFO] [stderr] | [INFO] [stderr] 364 | ((b0 as u32) & 0b00011111) << 6 | ((bytes[0] as u32) & 0b00111111) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/text.rs:368:17 [INFO] [stderr] | [INFO] [stderr] 368 | b0 as u32 [INFO] [stderr] | ^^^^^^^^^ help: try: `u32::from(b0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `content`. [INFO] [stderr] --> src/text.rs:454:14 [INFO] [stderr] | [INFO] [stderr] 454 | for i in start..(start + length) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 454 | for in content.iter().skip(start).take(length) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/text.rs:458:5 [INFO] [stderr] | [INFO] [stderr] 458 | result.unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `result.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/text.rs:436:9 [INFO] [stderr] | [INFO] [stderr] 436 | i = i + 1; [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/text.rs:442:24 [INFO] [stderr] | [INFO] [stderr] 442 | fn find_line_at(lines: &Vec, index: usize) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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: the loop variable `i` is used to index `lines` [INFO] [stderr] --> src/text.rs:443:14 [INFO] [stderr] | [INFO] [stderr] 443 | for i in 1..lines.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] 443 | for (i, ) in lines.iter().enumerate().skip(1) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `content`. [INFO] [stderr] --> src/text.rs:454:14 [INFO] [stderr] | [INFO] [stderr] 454 | for i in start..(start + length) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 454 | for in content.iter().skip(start).take(length) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/text.rs:458:5 [INFO] [stderr] | [INFO] [stderr] 458 | result.unwrap_or(String::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `result.unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/errors.rs:106:24 [INFO] [stderr] | [INFO] [stderr] 106 | let lead = self.unexpected[0] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.unexpected[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/errors.rs:107:25 [INFO] [stderr] | [INFO] [stderr] 107 | let trail = self.unexpected[1] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.unexpected[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/errors.rs:215:12 [INFO] [stderr] | [INFO] [stderr] 215 | if self.expected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.expected.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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/errors.rs:106:24 [INFO] [stderr] | [INFO] [stderr] 106 | let lead = self.unexpected[0] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.unexpected[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | / match self { [INFO] [stderr] 266 | | &ParseError::UnexpectedEndOfInput(ref x) => x.get_position(), [INFO] [stderr] 267 | | &ParseError::UnexpectedChar(ref x) => x.get_position(), [INFO] [stderr] 268 | | &ParseError::UnexpectedToken(ref x) => x.get_position(), [INFO] [stderr] 269 | | &ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_position(), [INFO] [stderr] 270 | | &ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_position() [INFO] [stderr] 271 | | } [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] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/errors.rs:107:25 [INFO] [stderr] | [INFO] [stderr] 107 | let trail = self.unexpected[1] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.unexpected[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 265 | match *self { [INFO] [stderr] 266 | ParseError::UnexpectedEndOfInput(ref x) => x.get_position(), [INFO] [stderr] 267 | ParseError::UnexpectedChar(ref x) => x.get_position(), [INFO] [stderr] 268 | ParseError::UnexpectedToken(ref x) => x.get_position(), [INFO] [stderr] 269 | ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_position(), [INFO] [stderr] 270 | ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_position() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match self { [INFO] [stderr] 277 | | &ParseError::UnexpectedEndOfInput(ref x) => x.get_length(), [INFO] [stderr] 278 | | &ParseError::UnexpectedChar(ref x) => x.get_length(), [INFO] [stderr] 279 | | &ParseError::UnexpectedToken(ref x) => x.get_length(), [INFO] [stderr] 280 | | &ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_length(), [INFO] [stderr] 281 | | &ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_length() [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] 276 | match *self { [INFO] [stderr] 277 | ParseError::UnexpectedEndOfInput(ref x) => x.get_length(), [INFO] [stderr] 278 | ParseError::UnexpectedChar(ref x) => x.get_length(), [INFO] [stderr] 279 | ParseError::UnexpectedToken(ref x) => x.get_length(), [INFO] [stderr] 280 | ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_length(), [INFO] [stderr] 281 | ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_length() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:287:9 [INFO] [stderr] | [INFO] [stderr] 287 | / match self { [INFO] [stderr] 288 | | &ParseError::UnexpectedEndOfInput(ref x) => x.get_message(), [INFO] [stderr] 289 | | &ParseError::UnexpectedChar(ref x) => x.get_message(), [INFO] [stderr] 290 | | &ParseError::UnexpectedToken(ref x) => x.get_message(), [INFO] [stderr] 291 | | &ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_message(), [INFO] [stderr] 292 | | &ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_message() [INFO] [stderr] 293 | | } [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 *self { [INFO] [stderr] 288 | ParseError::UnexpectedEndOfInput(ref x) => x.get_message(), [INFO] [stderr] 289 | ParseError::UnexpectedChar(ref x) => x.get_message(), [INFO] [stderr] 290 | ParseError::UnexpectedToken(ref x) => x.get_message(), [INFO] [stderr] 291 | ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_message(), [INFO] [stderr] 292 | ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_message() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `errors::ParseErrors` [INFO] [stderr] --> src/errors.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | / pub fn new() -> ParseErrors { [INFO] [stderr] 312 | | ParseErrors { [INFO] [stderr] 313 | | errors: Vec::::new() [INFO] [stderr] 314 | | } [INFO] [stderr] 315 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 304 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/errors.rs:215:12 [INFO] [stderr] | [INFO] [stderr] 215 | if self.expected.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.expected.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: manual implementation of an assign operation [INFO] [stderr] --> src/errors.rs:380:13 [INFO] [stderr] | [INFO] [stderr] 380 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | / match self { [INFO] [stderr] 266 | | &ParseError::UnexpectedEndOfInput(ref x) => x.get_position(), [INFO] [stderr] 267 | | &ParseError::UnexpectedChar(ref x) => x.get_position(), [INFO] [stderr] 268 | | &ParseError::UnexpectedToken(ref x) => x.get_position(), [INFO] [stderr] 269 | | &ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_position(), [INFO] [stderr] 270 | | &ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_position() [INFO] [stderr] 271 | | } [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] 265 | match *self { [INFO] [stderr] 266 | ParseError::UnexpectedEndOfInput(ref x) => x.get_position(), [INFO] [stderr] 267 | ParseError::UnexpectedChar(ref x) => x.get_position(), [INFO] [stderr] 268 | ParseError::UnexpectedToken(ref x) => x.get_position(), [INFO] [stderr] 269 | ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_position(), [INFO] [stderr] 270 | ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_position() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | / match self { [INFO] [stderr] 277 | | &ParseError::UnexpectedEndOfInput(ref x) => x.get_length(), [INFO] [stderr] 278 | | &ParseError::UnexpectedChar(ref x) => x.get_length(), [INFO] [stderr] 279 | | &ParseError::UnexpectedToken(ref x) => x.get_length(), [INFO] [stderr] 280 | | &ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_length(), [INFO] [stderr] 281 | | &ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_length() [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] 276 | match *self { [INFO] [stderr] 277 | ParseError::UnexpectedEndOfInput(ref x) => x.get_length(), [INFO] [stderr] 278 | ParseError::UnexpectedChar(ref x) => x.get_length(), [INFO] [stderr] 279 | ParseError::UnexpectedToken(ref x) => x.get_length(), [INFO] [stderr] 280 | ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_length(), [INFO] [stderr] 281 | ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_length() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:287:9 [INFO] [stderr] | [INFO] [stderr] 287 | / match self { [INFO] [stderr] 288 | | &ParseError::UnexpectedEndOfInput(ref x) => x.get_message(), [INFO] [stderr] 289 | | &ParseError::UnexpectedChar(ref x) => x.get_message(), [INFO] [stderr] 290 | | &ParseError::UnexpectedToken(ref x) => x.get_message(), [INFO] [stderr] 291 | | &ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_message(), [INFO] [stderr] 292 | | &ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_message() [INFO] [stderr] 293 | | } [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 *self { [INFO] [stderr] 288 | ParseError::UnexpectedEndOfInput(ref x) => x.get_message(), [INFO] [stderr] 289 | ParseError::UnexpectedChar(ref x) => x.get_message(), [INFO] [stderr] 290 | ParseError::UnexpectedToken(ref x) => x.get_message(), [INFO] [stderr] 291 | ParseError::IncorrectUTF16NoLowSurrogate(ref x) => x.get_message(), [INFO] [stderr] 292 | ParseError::IncorrectUTF16NoHighSurrogate(ref x) => x.get_message() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match self { [INFO] [stderr] 96 | | &SemanticElement::Token(ref token) => token.get_position(), [INFO] [stderr] 97 | | &SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 98 | | &SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 99 | | &SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] 100 | | } [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] 95 | match *self { [INFO] [stderr] 96 | SemanticElement::Token(ref token) => token.get_position(), [INFO] [stderr] 97 | SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 98 | SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 99 | SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / match self { [INFO] [stderr] 105 | | &SemanticElement::Token(ref token) => token.get_span(), [INFO] [stderr] 106 | | &SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 107 | | &SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 108 | | &SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] 109 | | } [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] 104 | match *self { [INFO] [stderr] 105 | SemanticElement::Token(ref token) => token.get_span(), [INFO] [stderr] 106 | SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 107 | SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 108 | SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `errors::ParseErrors` [INFO] [stderr] --> src/errors.rs:311:5 [INFO] [stderr] | [INFO] [stderr] 311 | / pub fn new() -> ParseErrors { [INFO] [stderr] 312 | | ParseErrors { [INFO] [stderr] 313 | | errors: Vec::::new() [INFO] [stderr] 314 | | } [INFO] [stderr] 315 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 304 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match self { [INFO] [stderr] 114 | | &SemanticElement::Token(ref token) => token.get_context(), [INFO] [stderr] 115 | | &SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 116 | | &SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 117 | | &SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] 118 | | } [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] 113 | match *self { [INFO] [stderr] 114 | SemanticElement::Token(ref token) => token.get_context(), [INFO] [stderr] 115 | SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 116 | SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 117 | SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:122:9 [INFO] [stderr] | [INFO] [stderr] 122 | / match self { [INFO] [stderr] 123 | | &SemanticElement::Token(ref token) => token.get_symbol(), [INFO] [stderr] 124 | | &SemanticElement::Terminal(ref symbol) => *symbol, [INFO] [stderr] 125 | | &SemanticElement::Variable(ref symbol) => *symbol, [INFO] [stderr] 126 | | &SemanticElement::Virtual(ref symbol) => *symbol [INFO] [stderr] 127 | | } [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] 122 | match *self { [INFO] [stderr] 123 | SemanticElement::Token(ref token) => token.get_symbol(), [INFO] [stderr] 124 | SemanticElement::Terminal(ref symbol) => *symbol, [INFO] [stderr] 125 | SemanticElement::Variable(ref symbol) => *symbol, [INFO] [stderr] 126 | SemanticElement::Virtual(ref symbol) => *symbol [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:131:9 [INFO] [stderr] | [INFO] [stderr] 131 | / match self { [INFO] [stderr] 132 | | &SemanticElement::Token(ref token) => token.get_value(), [INFO] [stderr] 133 | | &SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 134 | | &SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 135 | | &SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] 136 | | } [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] 131 | match *self { [INFO] [stderr] 132 | SemanticElement::Token(ref token) => token.get_value(), [INFO] [stderr] 133 | SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 134 | SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 135 | SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | / match self { [INFO] [stderr] 144 | | &SemanticElement::Token(ref _token) => SymbolType::Terminal, [INFO] [stderr] 145 | | &SemanticElement::Terminal(ref _symbol) => SymbolType::Terminal, [INFO] [stderr] 146 | | &SemanticElement::Variable(ref _symbol) => SymbolType::Variable, [INFO] [stderr] 147 | | &SemanticElement::Virtual(ref _symbol) => SymbolType::Virtual [INFO] [stderr] 148 | | } [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] 143 | match *self { [INFO] [stderr] 144 | SemanticElement::Token(ref _token) => SymbolType::Terminal, [INFO] [stderr] 145 | SemanticElement::Terminal(ref _symbol) => SymbolType::Terminal, [INFO] [stderr] 146 | SemanticElement::Variable(ref _symbol) => SymbolType::Variable, [INFO] [stderr] 147 | SemanticElement::Virtual(ref _symbol) => SymbolType::Virtual [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/errors.rs:380:13 [INFO] [stderr] | [INFO] [stderr] 380 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] warning: you should consider adding a `Default` implementation for `tokens::TokenRepositoryImpl` [INFO] [stderr] --> src/tokens.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new() -> TokenRepositoryImpl { [INFO] [stderr] 48 | | TokenRepositoryImpl { [INFO] [stderr] 49 | | cells: BigList::new(TokenRepositoryCell { [INFO] [stderr] 50 | | terminal: 0, [INFO] [stderr] ... | [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] help: try this [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] 45 | impl Default for tokens::TokenRepositoryImpl { [INFO] [stderr] 46 | fn default() -> Self { [INFO] [stderr] 47 | Self::new() [INFO] [stderr] 48 | } [INFO] [stderr] 49 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tokens.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match self { [INFO] [stderr] 96 | | &SemanticElement::Token(ref token) => token.get_position(), [INFO] [stderr] 97 | | &SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 98 | | &SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 99 | | &SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] 100 | | } [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] 95 | match *self { [INFO] [stderr] 96 | SemanticElement::Token(ref token) => token.get_position(), [INFO] [stderr] 97 | SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 98 | SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 99 | SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / match self { [INFO] [stderr] 105 | | &SemanticElement::Token(ref token) => token.get_span(), [INFO] [stderr] 106 | | &SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 107 | | &SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 108 | | &SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] 109 | | } [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] 104 | match *self { [INFO] [stderr] 105 | SemanticElement::Token(ref token) => token.get_span(), [INFO] [stderr] 106 | SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 107 | SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 108 | SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match self { [INFO] [stderr] 114 | | &SemanticElement::Token(ref token) => token.get_context(), [INFO] [stderr] 115 | | &SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 116 | | &SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 117 | | &SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] 118 | | } [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] 113 | match *self { [INFO] [stderr] 114 | SemanticElement::Token(ref token) => token.get_context(), [INFO] [stderr] 115 | SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 116 | SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 117 | SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:122:9 [INFO] [stderr] | [INFO] [stderr] 122 | / match self { [INFO] [stderr] 123 | | &SemanticElement::Token(ref token) => token.get_symbol(), [INFO] [stderr] 124 | | &SemanticElement::Terminal(ref symbol) => *symbol, [INFO] [stderr] 125 | | &SemanticElement::Variable(ref symbol) => *symbol, [INFO] [stderr] 126 | | &SemanticElement::Virtual(ref symbol) => *symbol [INFO] [stderr] 127 | | } [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] 122 | match *self { [INFO] [stderr] 123 | SemanticElement::Token(ref token) => token.get_symbol(), [INFO] [stderr] 124 | SemanticElement::Terminal(ref symbol) => *symbol, [INFO] [stderr] 125 | SemanticElement::Variable(ref symbol) => *symbol, [INFO] [stderr] 126 | SemanticElement::Virtual(ref symbol) => *symbol [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:131:9 [INFO] [stderr] | [INFO] [stderr] 131 | / match self { [INFO] [stderr] 132 | | &SemanticElement::Token(ref token) => token.get_value(), [INFO] [stderr] 133 | | &SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 134 | | &SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 135 | | &SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] 136 | | } [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] 131 | match *self { [INFO] [stderr] 132 | SemanticElement::Token(ref token) => token.get_value(), [INFO] [stderr] 133 | SemanticElement::Terminal(ref _symbol) => None, [INFO] [stderr] 134 | SemanticElement::Variable(ref _symbol) => None, [INFO] [stderr] 135 | SemanticElement::Virtual(ref _symbol) => None [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/symbols.rs:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | / match self { [INFO] [stderr] 144 | | &SemanticElement::Token(ref _token) => SymbolType::Terminal, [INFO] [stderr] 145 | | &SemanticElement::Terminal(ref _symbol) => SymbolType::Terminal, [INFO] [stderr] 146 | | &SemanticElement::Variable(ref _symbol) => SymbolType::Variable, [INFO] [stderr] 147 | | &SemanticElement::Virtual(ref _symbol) => SymbolType::Virtual [INFO] [stderr] 148 | | } [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] 143 | match *self { [INFO] [stderr] 144 | SemanticElement::Token(ref _token) => SymbolType::Terminal, [INFO] [stderr] 145 | SemanticElement::Terminal(ref _symbol) => SymbolType::Terminal, [INFO] [stderr] 146 | SemanticElement::Variable(ref _symbol) => SymbolType::Variable, [INFO] [stderr] 147 | SemanticElement::Virtual(ref _symbol) => SymbolType::Virtual [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `tokens::TokenRepositoryImpl` [INFO] [stderr] --> src/tokens.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | / pub fn new() -> TokenRepositoryImpl { [INFO] [stderr] 48 | | TokenRepositoryImpl { [INFO] [stderr] 49 | | cells: BigList::new(TokenRepositoryCell { [INFO] [stderr] 50 | | terminal: 0, [INFO] [stderr] ... | [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 45 | impl Default for tokens::TokenRepositoryImpl { [INFO] [stderr] 46 | fn default() -> Self { [INFO] [stderr] 47 | Self::new() [INFO] [stderr] 48 | } [INFO] [stderr] 49 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/tokens.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexers/automaton.rs:50:20 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn matches(&self, c: Utf16C) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/automaton.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | self.table[self.offset + 3 + self.table[self.offset] as usize * 2 + value as usize] as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.table[self.offset + 3 + self.table[self.offset] as usize * 2 + value as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/automaton.rs:113:21 [INFO] [stderr] | [INFO] [stderr] 113 | target: self.table[offset + 2] as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.table[offset + 2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/lexers/automaton.rs:50:20 [INFO] [stderr] | [INFO] [stderr] 50 | pub fn matches(&self, c: Utf16C) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/automaton.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | self.table[self.offset + 3 + self.table[self.offset] as usize * 2 + value as usize] as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.table[self.offset + 3 + self.table[self.offset] as usize * 2 + value as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `others`. [INFO] [stderr] --> src/lexers/fuzzy.rs:69:22 [INFO] [stderr] | [INFO] [stderr] 69 | for i in 0..others.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 69 | for in &others { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/automaton.rs:113:21 [INFO] [stderr] | [INFO] [stderr] 113 | target: self.table[offset + 2] as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.table[offset + 2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lexers/fuzzy.rs:218:15 [INFO] [stderr] | [INFO] [stderr] 218 | while result.heads.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.heads.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `others`. [INFO] [stderr] --> src/lexers/fuzzy.rs:69:22 [INFO] [stderr] | [INFO] [stderr] 69 | for i in 0..others.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 69 | for in &others { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/fuzzy.rs:354:16 [INFO] [stderr] | [INFO] [stderr] 354 | && state_data.get_terminal(0).index as u32 != self.separator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(state_data.get_terminal(0).index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/fuzzy.rs:376:16 [INFO] [stderr] | [INFO] [stderr] 376 | && state_data.get_terminal(0).index as u32 != self.separator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(state_data.get_terminal(0).index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/lexers/fuzzy.rs:477:5 [INFO] [stderr] | [INFO] [stderr] 477 | / fn explore_insertion( [INFO] [stderr] 478 | | &self, [INFO] [stderr] 479 | | result: &mut FuzzyMatcherResult, [INFO] [stderr] 480 | | head: &FuzzyMatcherHead, [INFO] [stderr] ... | [INFO] [stderr] 502 | | } [INFO] [stderr] 503 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/fuzzy.rs:489:16 [INFO] [stderr] | [INFO] [stderr] 489 | && state_data.get_terminal(0).index as u32 != self.separator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(state_data.get_terminal(0).index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lexers/fuzzy.rs:218:15 [INFO] [stderr] | [INFO] [stderr] 218 | while result.heads.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.heads.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/fuzzy.rs:354:16 [INFO] [stderr] | [INFO] [stderr] 354 | && state_data.get_terminal(0).index as u32 != self.separator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(state_data.get_terminal(0).index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/lexers/impls.rs:46:8 [INFO] [stderr] | [INFO] [stderr] 46 | if recovery <= 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using recovery == 0 instead [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/fuzzy.rs:376:16 [INFO] [stderr] | [INFO] [stderr] 376 | && state_data.get_terminal(0).index as u32 != self.separator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(state_data.get_terminal(0).index)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/lexers/fuzzy.rs:477:5 [INFO] [stderr] | [INFO] [stderr] 477 | / fn explore_insertion( [INFO] [stderr] 478 | | &self, [INFO] [stderr] 479 | | result: &mut FuzzyMatcherResult, [INFO] [stderr] 480 | | head: &FuzzyMatcherHead, [INFO] [stderr] ... | [INFO] [stderr] 502 | | } [INFO] [stderr] 503 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lexers/fuzzy.rs:489:16 [INFO] [stderr] | [INFO] [stderr] 489 | && state_data.get_terminal(0).index as u32 != self.separator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(state_data.get_terminal(0).index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/lexers/impls.rs:46:8 [INFO] [stderr] | [INFO] [stderr] 46 | if recovery <= 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using recovery == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ast.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn get_type(&self) -> TableType { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ast.rs:80:22 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn get_index(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `ast::AstImpl` [INFO] [stderr] --> src/ast.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / pub fn new() -> AstImpl { [INFO] [stderr] 129 | | AstImpl { [INFO] [stderr] 130 | | nodes: BigList::::new(AstCell::new( [INFO] [stderr] 131 | | TableElemRef::new(TableType::None, 0), [INFO] [stderr] ... | [INFO] [stderr] 136 | | } [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 126 | impl Default for ast::AstImpl { [INFO] [stderr] 127 | fn default() -> Self { [INFO] [stderr] 128 | Self::new() [INFO] [stderr] 129 | } [INFO] [stderr] 130 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/ast.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / if data.root.is_none() { [INFO] [stderr] 265 | | return None; [INFO] [stderr] 266 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `data.root?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [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:282:36 [INFO] [stderr] | [INFO] [stderr] 282 | pub fn store(&mut self, nodes: &Vec, index: usize, count: usize) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[AstCell]` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ast.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn get_type(&self) -> TableType { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ast.rs:80:22 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn get_index(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `ast::AstImpl` [INFO] [stderr] --> src/ast.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / pub fn new() -> AstImpl { [INFO] [stderr] 129 | | AstImpl { [INFO] [stderr] 130 | | nodes: BigList::::new(AstCell::new( [INFO] [stderr] 131 | | TableElemRef::new(TableType::None, 0), [INFO] [stderr] ... | [INFO] [stderr] 136 | | } [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 126 | impl Default for ast::AstImpl { [INFO] [stderr] 127 | fn default() -> Self { [INFO] [stderr] 128 | Self::new() [INFO] [stderr] 129 | } [INFO] [stderr] 130 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `ast::AstFamily<'a>` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/ast.rs:480:1 [INFO] [stderr] | [INFO] [stderr] 480 | / impl<'a> AstFamily<'a> { [INFO] [stderr] 481 | | /// Gets the number of children in this family [INFO] [stderr] 482 | | pub fn len(&self) -> usize { [INFO] [stderr] 483 | | self.tree.data.get().nodes[self.parent].count as usize [INFO] [stderr] ... | [INFO] [stderr] 493 | | } [INFO] [stderr] 494 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/ast.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / if data.root.is_none() { [INFO] [stderr] 265 | | return None; [INFO] [stderr] 266 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `data.root?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [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:282:36 [INFO] [stderr] | [INFO] [stderr] 282 | pub fn store(&mut self, nodes: &Vec, index: usize, count: usize) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[AstCell]` [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: item `ast::AstFamily<'a>` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/ast.rs:480:1 [INFO] [stderr] | [INFO] [stderr] 480 | / impl<'a> AstFamily<'a> { [INFO] [stderr] 481 | | /// Gets the number of children in this family [INFO] [stderr] 482 | | pub fn len(&self) -> usize { [INFO] [stderr] 483 | | self.tree.data.get().nodes[self.parent].count as usize [INFO] [stderr] ... | [INFO] [stderr] 493 | | } [INFO] [stderr] 494 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parsers/lrk.rs:311:65 [INFO] [stderr] | [INFO] [stderr] 311 | pub fn reduce_tree(reduction: &mut LRkAstReduction, handle: &Vec, result: &mut Ast) { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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: the loop variable `i` is only used to index `handle`. [INFO] [stderr] --> src/parsers/lrk.rs:322:18 [INFO] [stderr] | [INFO] [stderr] 322 | for i in 0..handle.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 322 | for in &handle { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:472:24 [INFO] [stderr] | [INFO] [stderr] 472 | state: action.get_data() as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:477:29 [INFO] [stderr] | [INFO] [stderr] 477 | .get_action(action.get_data() as u32, terminal_id); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:516:28 [INFO] [stderr] | [INFO] [stderr] 516 | state: action.get_data() as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:521:33 [INFO] [stderr] | [INFO] [stderr] 521 | .get_action(action.get_data() as u32, terminal.id); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parsers/lrk.rs:311:65 [INFO] [stderr] | [INFO] [stderr] 311 | pub fn reduce_tree(reduction: &mut LRkAstReduction, handle: &Vec, result: &mut Ast) { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:537:28 [INFO] [stderr] | [INFO] [stderr] 537 | state: action.get_data() as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `handle`. [INFO] [stderr] --> src/parsers/lrk.rs:322:18 [INFO] [stderr] | [INFO] [stderr] 322 | for i in 0..handle.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 322 | for in &handle { [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:556:24 [INFO] [stderr] | [INFO] [stderr] 556 | state: action.get_data() as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:472:24 [INFO] [stderr] | [INFO] [stderr] 472 | state: action.get_data() as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:477:29 [INFO] [stderr] | [INFO] [stderr] 477 | .get_action(action.get_data() as u32, terminal_id); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:516:28 [INFO] [stderr] | [INFO] [stderr] 516 | state: action.get_data() as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:521:33 [INFO] [stderr] | [INFO] [stderr] 521 | .get_action(action.get_data() as u32, terminal.id); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:537:28 [INFO] [stderr] | [INFO] [stderr] 537 | state: action.get_data() as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/lrk.rs:556:24 [INFO] [stderr] | [INFO] [stderr] 556 | state: action.get_data() as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/rnglr.rs:98:24 [INFO] [stderr] | [INFO] [stderr] 98 | count: read_u16(data, index) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(read_u16(data, index))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/rnglr.rs:98:24 [INFO] [stderr] | [INFO] [stderr] 98 | count: read_u16(data, index) as u32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(read_u16(data, index))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/parsers/rnglr.rs:402:18 [INFO] [stderr] | [INFO] [stderr] 402 | for i in (0..self.current_generation + 1).rev() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=self.current_generation)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:437:25 [INFO] [stderr] | [INFO] [stderr] 437 | / match &first_edge { [INFO] [stderr] 438 | | &None => { [INFO] [stderr] 439 | | // This is the first edge [INFO] [stderr] 440 | | first_edge = Some(edge); [INFO] [stderr] ... | [INFO] [stderr] 452 | | } [INFO] [stderr] 453 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 437 | match first_edge { [INFO] [stderr] 438 | None => { [INFO] [stderr] 439 | // This is the first edge [INFO] [stderr] 440 | first_edge = Some(edge); [INFO] [stderr] 441 | } [INFO] [stderr] 442 | Some(_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/parsers/rnglr.rs:520:46 [INFO] [stderr] | [INFO] [stderr] 520 | pub fn from(label: TableElemRef, buffer: &Vec, count: usize) -> SPPFNodeVersion { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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: the loop variable `i` is only used to index `buffer`. [INFO] [stderr] --> src/parsers/rnglr.rs:528:22 [INFO] [stderr] | [INFO] [stderr] 528 | for i in 0..count { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 528 | for in buffer.iter().take(count) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:540:9 [INFO] [stderr] | [INFO] [stderr] 540 | / match &self.children { [INFO] [stderr] 541 | | &None => 0, [INFO] [stderr] 542 | | &Some(ref children) => children.len() [INFO] [stderr] 543 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 540 | match self.children { [INFO] [stderr] 541 | None => 0, [INFO] [stderr] 542 | Some(ref children) => children.len() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/parsers/rnglr.rs:402:18 [INFO] [stderr] | [INFO] [stderr] 402 | for i in (0..self.current_generation + 1).rev() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=self.current_generation)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parsers/rnglr.rs:584:17 [INFO] [stderr] | [INFO] [stderr] 584 | buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:596:17 [INFO] [stderr] | [INFO] [stderr] 596 | buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:627:26 [INFO] [stderr] | [INFO] [stderr] 627 | children_buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:628:25 [INFO] [stderr] | [INFO] [stderr] 628 | actions_buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[TreeAction]` [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 both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:437:25 [INFO] [stderr] | [INFO] [stderr] 437 | / match &first_edge { [INFO] [stderr] 438 | | &None => { [INFO] [stderr] 439 | | // This is the first edge [INFO] [stderr] 440 | | first_edge = Some(edge); [INFO] [stderr] ... | [INFO] [stderr] 452 | | } [INFO] [stderr] 453 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 437 | match first_edge { [INFO] [stderr] 438 | None => { [INFO] [stderr] 439 | // This is the first edge [INFO] [stderr] 440 | first_edge = Some(edge); [INFO] [stderr] 441 | } [INFO] [stderr] 442 | Some(_x) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parsers/rnglr.rs:664:9 [INFO] [stderr] | [INFO] [stderr] 664 | / match self { [INFO] [stderr] 665 | | &SPPFNode::Normal(ref node) => node.original, [INFO] [stderr] 666 | | &SPPFNode::Replaceable(ref node) => node.original [INFO] [stderr] 667 | | } [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] 664 | match *self { [INFO] [stderr] 665 | SPPFNode::Normal(ref node) => node.original, [INFO] [stderr] 666 | SPPFNode::Replaceable(ref node) => node.original [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parsers/rnglr.rs:674:9 [INFO] [stderr] | [INFO] [stderr] 674 | / match self { [INFO] [stderr] 675 | | &SPPFNode::Normal(ref node) => node, [INFO] [stderr] 676 | | &SPPFNode::Replaceable(ref _node) => panic!("Expected a normal node") [INFO] [stderr] 677 | | } [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] 674 | match *self { [INFO] [stderr] 675 | SPPFNode::Normal(ref node) => node, [INFO] [stderr] 676 | SPPFNode::Replaceable(ref _node) => panic!("Expected a normal node") [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/parsers/rnglr.rs:520:46 [INFO] [stderr] | [INFO] [stderr] 520 | pub fn from(label: TableElemRef, buffer: &Vec, count: usize) -> SPPFNodeVersion { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:682:9 [INFO] [stderr] | [INFO] [stderr] 682 | / match self { [INFO] [stderr] 683 | | &mut SPPFNode::Normal(ref mut node) => node, [INFO] [stderr] 684 | | &mut SPPFNode::Replaceable(ref _node) => panic!("Expected a normal node") [INFO] [stderr] 685 | | } [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] 682 | match *self { [INFO] [stderr] 683 | SPPFNode::Normal(ref mut node) => node, [INFO] [stderr] 684 | SPPFNode::Replaceable(ref _node) => panic!("Expected a normal node") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `buffer`. [INFO] [stderr] --> src/parsers/rnglr.rs:528:22 [INFO] [stderr] | [INFO] [stderr] 528 | for i in 0..count { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 528 | for in buffer.iter().take(count) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:540:9 [INFO] [stderr] | [INFO] [stderr] 540 | / match &self.children { [INFO] [stderr] 541 | | &None => 0, [INFO] [stderr] 542 | | &Some(ref children) => children.len() [INFO] [stderr] 543 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 540 | match self.children { [INFO] [stderr] 541 | None => 0, [INFO] [stderr] 542 | Some(ref children) => children.len() [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/parsers/rnglr.rs:732:17 [INFO] [stderr] | [INFO] [stderr] 732 | buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:750:26 [INFO] [stderr] | [INFO] [stderr] 750 | children_buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:751:25 [INFO] [stderr] | [INFO] [stderr] 751 | actions_buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[TreeAction]` [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/parsers/rnglr.rs:584:17 [INFO] [stderr] | [INFO] [stderr] 584 | buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:596:17 [INFO] [stderr] | [INFO] [stderr] 596 | buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:627:26 [INFO] [stderr] | [INFO] [stderr] 627 | children_buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:628:25 [INFO] [stderr] | [INFO] [stderr] 628 | actions_buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[TreeAction]` [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: the loop variable `i` is only used to index `my_history`. [INFO] [stderr] --> src/parsers/rnglr.rs:861:18 [INFO] [stderr] | [INFO] [stderr] 861 | for i in 0..my_history.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 861 | for in &mut my_history { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parsers/rnglr.rs:664:9 [INFO] [stderr] | [INFO] [stderr] 664 | / match self { [INFO] [stderr] 665 | | &SPPFNode::Normal(ref node) => node.original, [INFO] [stderr] 666 | | &SPPFNode::Replaceable(ref node) => node.original [INFO] [stderr] 667 | | } [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] 664 | match *self { [INFO] [stderr] 665 | SPPFNode::Normal(ref node) => node.original, [INFO] [stderr] 666 | SPPFNode::Replaceable(ref node) => node.original [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parsers/rnglr.rs:674:9 [INFO] [stderr] | [INFO] [stderr] 674 | / match self { [INFO] [stderr] 675 | | &SPPFNode::Normal(ref node) => node, [INFO] [stderr] 676 | | &SPPFNode::Replaceable(ref _node) => panic!("Expected a normal node") [INFO] [stderr] 677 | | } [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] 674 | match *self { [INFO] [stderr] 675 | SPPFNode::Normal(ref node) => node, [INFO] [stderr] 676 | SPPFNode::Replaceable(ref _node) => panic!("Expected a normal node") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parsers/rnglr.rs:682:9 [INFO] [stderr] | [INFO] [stderr] 682 | / match self { [INFO] [stderr] 683 | | &mut SPPFNode::Normal(ref mut node) => node, [INFO] [stderr] 684 | | &mut SPPFNode::Replaceable(ref _node) => panic!("Expected a normal node") [INFO] [stderr] 685 | | } [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] 682 | match *self { [INFO] [stderr] 683 | SPPFNode::Normal(ref mut node) => node, [INFO] [stderr] 684 | SPPFNode::Replaceable(ref _node) => panic!("Expected a normal node") [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/parsers/rnglr.rs:732:17 [INFO] [stderr] | [INFO] [stderr] 732 | buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:750:26 [INFO] [stderr] | [INFO] [stderr] 750 | children_buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[SPPFNodeRef]` [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/parsers/rnglr.rs:751:25 [INFO] [stderr] | [INFO] [stderr] 751 | actions_buffer: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[TreeAction]` [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/parsers/rnglr.rs:925:9 [INFO] [stderr] | [INFO] [stderr] 925 | / match node { [INFO] [stderr] 926 | | &SPPFNode::Normal(ref normal) => { [INFO] [stderr] 927 | | // this is a simple reference to an existing SPPF node [INFO] [stderr] 928 | | SPPFBuilder::reduction_add_to_cache_node(reduction, normal, sppf_node, action); [INFO] [stderr] ... | [INFO] [stderr] 946 | | } [INFO] [stderr] 947 | | } [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] 925 | match *node { [INFO] [stderr] 926 | SPPFNode::Normal(ref normal) => { [INFO] [stderr] 927 | // this is a simple reference to an existing SPPF node [INFO] [stderr] 928 | SPPFBuilder::reduction_add_to_cache_node(reduction, normal, sppf_node, action); [INFO] [stderr] 929 | } [INFO] [stderr] 930 | SPPFNode::Replaceable(ref replaceable) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:932:17 [INFO] [stderr] | [INFO] [stderr] 932 | / match &replaceable.children { [INFO] [stderr] 933 | | &None => {} [INFO] [stderr] 934 | | &Some(ref children) => { [INFO] [stderr] 935 | | let actions = replaceable.actions.as_ref().unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 944 | | } [INFO] [stderr] 945 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 932 | match replaceable.children { [INFO] [stderr] 933 | None => {} [INFO] [stderr] 934 | Some(ref children) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:966:9 [INFO] [stderr] | [INFO] [stderr] 966 | / match &node.versions[0].children { [INFO] [stderr] 967 | | &None => {} [INFO] [stderr] 968 | | &Some(ref children) => for child in children.iter() { [INFO] [stderr] 969 | | reduction.cache.push(*child); [INFO] [stderr] 970 | | } [INFO] [stderr] 971 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 966 | match node.versions[0].children { [INFO] [stderr] 967 | None => {} [INFO] [stderr] 968 | Some(ref children) => for child in children.iter() { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `my_history`. [INFO] [stderr] --> src/parsers/rnglr.rs:861:18 [INFO] [stderr] | [INFO] [stderr] 861 | for i in 0..my_history.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 861 | for in &mut my_history { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parsers/rnglr.rs:925:9 [INFO] [stderr] | [INFO] [stderr] 925 | / match node { [INFO] [stderr] 926 | | &SPPFNode::Normal(ref normal) => { [INFO] [stderr] 927 | | // this is a simple reference to an existing SPPF node [INFO] [stderr] 928 | | SPPFBuilder::reduction_add_to_cache_node(reduction, normal, sppf_node, action); [INFO] [stderr] ... | [INFO] [stderr] 946 | | } [INFO] [stderr] 947 | | } [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] 925 | match *node { [INFO] [stderr] 926 | SPPFNode::Normal(ref normal) => { [INFO] [stderr] 927 | // this is a simple reference to an existing SPPF node [INFO] [stderr] 928 | SPPFBuilder::reduction_add_to_cache_node(reduction, normal, sppf_node, action); [INFO] [stderr] 929 | } [INFO] [stderr] 930 | SPPFNode::Replaceable(ref replaceable) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:932:17 [INFO] [stderr] | [INFO] [stderr] 932 | / match &replaceable.children { [INFO] [stderr] 933 | | &None => {} [INFO] [stderr] 934 | | &Some(ref children) => { [INFO] [stderr] 935 | | let actions = replaceable.actions.as_ref().unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 944 | | } [INFO] [stderr] 945 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 932 | match replaceable.children { [INFO] [stderr] 933 | None => {} [INFO] [stderr] 934 | Some(ref children) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the variable `insertion` is used as a loop counter. Consider using `for (insertion, item) in 0..reduction.handle_indices.len().enumerate()` or similar iterators [INFO] [stderr] --> src/parsers/rnglr.rs:1102:18 [INFO] [stderr] | [INFO] [stderr] 1102 | for i in 0..reduction.handle_indices.len() { [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:966:9 [INFO] [stderr] | [INFO] [stderr] 966 | / match &node.versions[0].children { [INFO] [stderr] 967 | | &None => {} [INFO] [stderr] 968 | | &Some(ref children) => for child in children.iter() { [INFO] [stderr] 969 | | reduction.cache.push(*child); [INFO] [stderr] 970 | | } [INFO] [stderr] 971 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 966 | match node.versions[0].children { [INFO] [stderr] 967 | None => {} [INFO] [stderr] 968 | Some(ref children) => for child in children.iter() { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:1136:9 [INFO] [stderr] | [INFO] [stderr] 1136 | / match &version.children { [INFO] [stderr] 1137 | | &None => AstCell { [INFO] [stderr] 1138 | | label: version.label, [INFO] [stderr] 1139 | | first: 0, [INFO] [stderr] ... | [INFO] [stderr] 1153 | | } [INFO] [stderr] 1154 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 1136 | match version.children { [INFO] [stderr] 1137 | None => AstCell { [INFO] [stderr] 1138 | label: version.label, [INFO] [stderr] 1139 | first: 0, [INFO] [stderr] 1140 | count: 0 [INFO] [stderr] 1141 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `children`. [INFO] [stderr] --> src/parsers/rnglr.rs:1144:26 [INFO] [stderr] | [INFO] [stderr] 1144 | for i in 0..children.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1144 | for in &children { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 32 [INFO] [stderr] --> src/parsers/rnglr.rs:1203:5 [INFO] [stderr] | [INFO] [stderr] 1203 | / fn get_context_priority( [INFO] [stderr] 1204 | | &self, [INFO] [stderr] 1205 | | token_count: usize, [INFO] [stderr] 1206 | | context: u16, [INFO] [stderr] ... | [INFO] [stderr] 1403 | | None [INFO] [stderr] 1404 | | } [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: the variable `insertion` is used as a loop counter. Consider using `for (insertion, item) in 0..reduction.handle_indices.len().enumerate()` or similar iterators [INFO] [stderr] --> src/parsers/rnglr.rs:1102:18 [INFO] [stderr] | [INFO] [stderr] 1102 | for i in 0..reduction.handle_indices.len() { [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:1136:9 [INFO] [stderr] | [INFO] [stderr] 1136 | / match &version.children { [INFO] [stderr] 1137 | | &None => AstCell { [INFO] [stderr] 1138 | | label: version.label, [INFO] [stderr] 1139 | | first: 0, [INFO] [stderr] ... | [INFO] [stderr] 1153 | | } [INFO] [stderr] 1154 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 1136 | match version.children { [INFO] [stderr] 1137 | None => AstCell { [INFO] [stderr] 1138 | label: version.label, [INFO] [stderr] 1139 | first: 0, [INFO] [stderr] 1140 | count: 0 [INFO] [stderr] 1141 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `children`. [INFO] [stderr] --> src/parsers/rnglr.rs:1144:26 [INFO] [stderr] | [INFO] [stderr] 1144 | for i in 0..children.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1144 | for in &children { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 32 [INFO] [stderr] --> src/parsers/rnglr.rs:1203:5 [INFO] [stderr] | [INFO] [stderr] 1203 | / fn get_context_priority( [INFO] [stderr] 1204 | | &self, [INFO] [stderr] 1205 | | token_count: usize, [INFO] [stderr] 1206 | | context: u16, [INFO] [stderr] ... | [INFO] [stderr] 1403 | | None [INFO] [stderr] 1404 | | } [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 don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:1410:9 [INFO] [stderr] | [INFO] [stderr] 1410 | / match &self.next_token { [INFO] [stderr] 1411 | | &None => SID_EPSILON, [INFO] [stderr] 1412 | | &Some(ref kernel) => kernel.terminal_id [INFO] [stderr] 1413 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 1410 | match self.next_token { [INFO] [stderr] 1411 | None => SID_EPSILON, [INFO] [stderr] 1412 | Some(ref kernel) => kernel.terminal_id [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/parsers/rnglr.rs:1410:9 [INFO] [stderr] | [INFO] [stderr] 1410 | / match &self.next_token { [INFO] [stderr] 1411 | | &None => SID_EPSILON, [INFO] [stderr] 1412 | | &Some(ref kernel) => kernel.terminal_id [INFO] [stderr] 1413 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 1410 | match self.next_token { [INFO] [stderr] 1411 | None => SID_EPSILON, [INFO] [stderr] 1412 | Some(ref kernel) => kernel.terminal_id [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/rnglr.rs:1528:29 [INFO] [stderr] | [INFO] [stderr] 1528 | return Some(action.get_data() as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/rnglr.rs:1528:29 [INFO] [stderr] | [INFO] [stderr] 1528 | return Some(action.get_data() as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(action.get_data())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parsers/rnglr.rs:1757:20 [INFO] [stderr] | [INFO] [stderr] 1757 | nullables: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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: the loop variable `i` is only used to index `paths`. [INFO] [stderr] --> src/parsers/rnglr.rs:1825:18 [INFO] [stderr] | [INFO] [stderr] 1825 | for i in 0..paths.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1825 | for in &paths { [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/parsers/rnglr.rs:1757:20 [INFO] [stderr] | [INFO] [stderr] 1757 | nullables: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[usize]` [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: the loop variable `i` is only used to index `paths`. [INFO] [stderr] --> src/parsers/rnglr.rs:1825:18 [INFO] [stderr] | [INFO] [stderr] 1825 | for i in 0..paths.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 1825 | for in &paths { [INFO] [stderr] | ^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/mod.rs:129:20 [INFO] [stderr] | [INFO] [stderr] 129 | if self.others[i].identifier as u32 == identifier { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.others[i].identifier)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `parsers::LRContexts` [INFO] [stderr] --> src/parsers/mod.rs:156:5 [INFO] [stderr] | [INFO] [stderr] 156 | / pub fn new() -> LRContexts { [INFO] [stderr] 157 | | LRContexts { openings: None } [INFO] [stderr] 158 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 149 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/mod.rs:186:24 [INFO] [stderr] | [INFO] [stderr] 186 | if x.identifier as u32 == terminal_id && x.context == context { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(x.identifier)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/parsers/mod.rs:244:27 [INFO] [stderr] | [INFO] [stderr] 244 | let head_action = data[*index] as TreeAction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[*index])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `parsers::LRExpected` [INFO] [stderr] --> src/parsers/mod.rs:274:5 [INFO] [stderr] | [INFO] [stderr] 274 | / pub fn new() -> LRExpected { [INFO] [stderr] 275 | | LRExpected { [INFO] [stderr] 276 | | shifts: Vec::::new(), [INFO] [stderr] 277 | | reductions: Vec::::new() [INFO] [stderr] 278 | | } [INFO] [stderr] 279 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 265 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/mod.rs:129:20 [INFO] [stderr] | [INFO] [stderr] 129 | if self.others[i].identifier as u32 == identifier { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.others[i].identifier)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `parsers::LRContexts` [INFO] [stderr] --> src/parsers/mod.rs:156:5 [INFO] [stderr] | [INFO] [stderr] 156 | / pub fn new() -> LRContexts { [INFO] [stderr] 157 | | LRContexts { openings: None } [INFO] [stderr] 158 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 149 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/parsers/mod.rs:186:24 [INFO] [stderr] | [INFO] [stderr] 186 | if x.identifier as u32 == terminal_id && x.context == context { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(x.identifier)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/parsers/mod.rs:244:27 [INFO] [stderr] | [INFO] [stderr] 244 | let head_action = data[*index] as TreeAction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[*index])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `parsers::LRExpected` [INFO] [stderr] --> src/parsers/mod.rs:274:5 [INFO] [stderr] | [INFO] [stderr] 274 | / pub fn new() -> LRExpected { [INFO] [stderr] 275 | | LRExpected { [INFO] [stderr] 276 | | shifts: Vec::::new(), [INFO] [stderr] 277 | | reductions: Vec::::new() [INFO] [stderr] 278 | | } [INFO] [stderr] 279 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 265 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `hime_redist`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `hime_redist`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "caefc7e6a0eb455b43135212200e4dbe6b1797caefb7289571359628d8457d1b"` [INFO] running `"docker" "rm" "-f" "caefc7e6a0eb455b43135212200e4dbe6b1797caefb7289571359628d8457d1b"` [INFO] [stdout] caefc7e6a0eb455b43135212200e4dbe6b1797caefb7289571359628d8457d1b