[INFO] crate boringauth 0.7.0 is already in cache [INFO] extracting crate boringauth 0.7.0 into work/ex/clippy-test-run/sources/stable/reg/boringauth/0.7.0 [INFO] extracting crate boringauth 0.7.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/boringauth/0.7.0 [INFO] validating manifest of boringauth-0.7.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 boringauth-0.7.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 boringauth-0.7.0 [INFO] finished frobbing boringauth-0.7.0 [INFO] frobbed toml for boringauth-0.7.0 written to work/ex/clippy-test-run/sources/stable/reg/boringauth/0.7.0/Cargo.toml [INFO] started frobbing boringauth-0.7.0 [INFO] finished frobbing boringauth-0.7.0 [INFO] frobbed toml for boringauth-0.7.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/boringauth/0.7.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 boringauth-0.7.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/boringauth/0.7.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 0c5b5138f77a177322d1e26e946b96aa6d3cd075a82832c0baccddcc8b436c3b [INFO] running `"docker" "start" "-a" "0c5b5138f77a177322d1e26e946b96aa6d3cd075a82832c0baccddcc8b436c3b"` [INFO] [stderr] Checking boringauth v0.7.0 (/opt/crater/workdir) [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/oath/hotp.rs:255:22 [INFO] [stderr] | [INFO] [stderr] 255 | n if n < 1000000 => return Err(ErrorCode::CodeTooSmall), [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [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/oath/hotp.rs:256:22 [INFO] [stderr] | [INFO] [stderr] 256 | n if n > 2147483648 => return Err(ErrorCode::CodeTooBig), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_147_483_648` [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/oath/totp.rs:269:22 [INFO] [stderr] | [INFO] [stderr] 269 | n if n < 1000000 => return Err(ErrorCode::CodeTooSmall), [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [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/oath/totp.rs:270:22 [INFO] [stderr] | [INFO] [stderr] 270 | n if n > 2147483648 => return Err(ErrorCode::CodeTooBig), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_147_483_648` [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 unit return type [INFO] [stderr] --> src/pass/phc_encoding.rs:129:52 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn insert(&mut self, k: String, v: String) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/pass/phc_encoding.rs:202:9 [INFO] [stderr] | [INFO] [stderr] 202 | return Ok(encoded); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(encoded)` [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/oath/hotp.rs:255:22 [INFO] [stderr] | [INFO] [stderr] 255 | n if n < 1000000 => return Err(ErrorCode::CodeTooSmall), [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [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/oath/hotp.rs:256:22 [INFO] [stderr] | [INFO] [stderr] 256 | n if n > 2147483648 => return Err(ErrorCode::CodeTooBig), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_147_483_648` [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/oath/hotp.rs:624:42 [INFO] [stderr] | [INFO] [stderr] 624 | for nb in vec![10, 42, 69, 1024, 0xffffff] { [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00ff_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/oath/totp.rs:269:22 [INFO] [stderr] | [INFO] [stderr] 269 | n if n < 1000000 => return Err(ErrorCode::CodeTooSmall), [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [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/oath/totp.rs:270:22 [INFO] [stderr] | [INFO] [stderr] 270 | n if n > 2147483648 => return Err(ErrorCode::CodeTooBig), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_147_483_648` [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/oath/totp.rs:425:24 [INFO] [stderr] | [INFO] [stderr] 425 | .timestamp(1111111109) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_109` [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/oath/totp.rs:471:24 [INFO] [stderr] | [INFO] [stderr] 471 | .timestamp(1111111109) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_109` [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/oath/totp.rs:514:24 [INFO] [stderr] | [INFO] [stderr] 514 | .timestamp(1111111109) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_109` [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/oath/totp.rs:560:24 [INFO] [stderr] | [INFO] [stderr] 560 | .timestamp(1111111109) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_109` [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/oath/totp.rs:617:42 [INFO] [stderr] | [INFO] [stderr] 617 | for nb in vec![10, 42, 69, 1024, 0xffffff] { [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00ff_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/oath/totp.rs:707:26 [INFO] [stderr] | [INFO] [stderr] 707 | (1111111109, HashFunction::Sha1, "07081804"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_109` [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/oath/totp.rs:708:26 [INFO] [stderr] | [INFO] [stderr] 708 | (1111111111, HashFunction::Sha1, "14050471"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_111` [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/oath/totp.rs:709:26 [INFO] [stderr] | [INFO] [stderr] 709 | (1234567890, HashFunction::Sha1, "89005924"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:710:26 [INFO] [stderr] | [INFO] [stderr] 710 | (2000000000, HashFunction::Sha1, "69279037"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_000_000_000` [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/oath/totp.rs:711:26 [INFO] [stderr] | [INFO] [stderr] 711 | (20000000000, HashFunction::Sha1, "65353130")]; [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `20_000_000_000` [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/oath/totp.rs:730:26 [INFO] [stderr] | [INFO] [stderr] 730 | (1111111109, HashFunction::Sha256, "68084774"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_109` [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/oath/totp.rs:731:26 [INFO] [stderr] | [INFO] [stderr] 731 | (1111111111, HashFunction::Sha256, "67062674"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_111` [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/oath/totp.rs:732:26 [INFO] [stderr] | [INFO] [stderr] 732 | (1234567890, HashFunction::Sha256, "91819424"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:733:26 [INFO] [stderr] | [INFO] [stderr] 733 | (2000000000, HashFunction::Sha256, "90698825"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_000_000_000` [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/oath/totp.rs:734:26 [INFO] [stderr] | [INFO] [stderr] 734 | (20000000000, HashFunction::Sha256, "77737706")]; [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `20_000_000_000` [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/oath/totp.rs:753:26 [INFO] [stderr] | [INFO] [stderr] 753 | (1111111109, HashFunction::Sha512, "25091201"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_109` [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/oath/totp.rs:754:26 [INFO] [stderr] | [INFO] [stderr] 754 | (1111111111, HashFunction::Sha512, "99943326"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_111_111_111` [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/oath/totp.rs:755:26 [INFO] [stderr] | [INFO] [stderr] 755 | (1234567890, HashFunction::Sha512, "93441116"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:756:26 [INFO] [stderr] | [INFO] [stderr] 756 | (2000000000, HashFunction::Sha512, "38618901"), [INFO] [stderr] | ^^^^^^^^^^ help: consider: `2_000_000_000` [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/oath/totp.rs:757:26 [INFO] [stderr] | [INFO] [stderr] 757 | (20000000000, HashFunction::Sha512, "47863826")]; [INFO] [stderr] | ^^^^^^^^^^^ help: consider: `20_000_000_000` [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/oath/totp.rs:790:14 [INFO] [stderr] | [INFO] [stderr] 790 | (1234567890, 0, "590587", false), // +1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:791:14 [INFO] [stderr] | [INFO] [stderr] 791 | (1234567890, 1, "590587", true), // +1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:792:14 [INFO] [stderr] | [INFO] [stderr] 792 | (1234567890, 1, "240500", false), // +2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:793:14 [INFO] [stderr] | [INFO] [stderr] 793 | (1234567890, 2, "240500", true), // +2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:794:14 [INFO] [stderr] | [INFO] [stderr] 794 | (1234567890, 0, "980357", false), // -1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:795:14 [INFO] [stderr] | [INFO] [stderr] 795 | (1234567890, 1, "980357", true), // -1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:796:14 [INFO] [stderr] | [INFO] [stderr] 796 | (1234567890, 1, "186057", false), // -2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:797:14 [INFO] [stderr] | [INFO] [stderr] 797 | (1234567890, 2, "186057", true), // -2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:815:14 [INFO] [stderr] | [INFO] [stderr] 815 | (1234567890, 0, "590587", false), // +1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:816:14 [INFO] [stderr] | [INFO] [stderr] 816 | (1234567890, 1, "590587", true), // +1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:817:14 [INFO] [stderr] | [INFO] [stderr] 817 | (1234567890, 1, "240500", false), // +2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:818:14 [INFO] [stderr] | [INFO] [stderr] 818 | (1234567890, 2, "240500", true), // +2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:819:14 [INFO] [stderr] | [INFO] [stderr] 819 | (1234567890, 0, "980357", false), // -1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:820:14 [INFO] [stderr] | [INFO] [stderr] 820 | (1234567890, 1, "980357", false), // -1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:821:14 [INFO] [stderr] | [INFO] [stderr] 821 | (1234567890, 1, "186057", false), // -2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:822:14 [INFO] [stderr] | [INFO] [stderr] 822 | (1234567890, 2, "186057", false), // -2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:841:14 [INFO] [stderr] | [INFO] [stderr] 841 | (1234567890, 0, "590587", false), // +1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:842:14 [INFO] [stderr] | [INFO] [stderr] 842 | (1234567890, 1, "590587", false), // +1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:843:14 [INFO] [stderr] | [INFO] [stderr] 843 | (1234567890, 1, "240500", false), // +2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:844:14 [INFO] [stderr] | [INFO] [stderr] 844 | (1234567890, 2, "240500", false), // +2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:845:14 [INFO] [stderr] | [INFO] [stderr] 845 | (1234567890, 0, "980357", false), // -1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:846:14 [INFO] [stderr] | [INFO] [stderr] 846 | (1234567890, 1, "980357", true), // -1 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:847:14 [INFO] [stderr] | [INFO] [stderr] 847 | (1234567890, 1, "186057", false), // -2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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/oath/totp.rs:848:14 [INFO] [stderr] | [INFO] [stderr] 848 | (1234567890, 2, "186057", true), // -2 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_234_567_890` [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 unit return type [INFO] [stderr] --> src/pass/phc_encoding.rs:129:52 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn insert(&mut self, k: String, v: String) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/pass/phc_encoding.rs:202:9 [INFO] [stderr] | [INFO] [stderr] 202 | return Ok(encoded); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(encoded)` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/oath/hotp.rs:89:27 [INFO] [stderr] | [INFO] [stderr] 89 | let snum: u32 = ((hash[0] as u32 & 0x7f) << 24) | ((hash[1] as u32 & 0xff) << 16) | [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(hash[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/oath/hotp.rs:89:61 [INFO] [stderr] | [INFO] [stderr] 89 | let snum: u32 = ((hash[0] as u32 & 0x7f) << 24) | ((hash[1] as u32 & 0xff) << 16) | [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(hash[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/oath/hotp.rs:90:27 [INFO] [stderr] | [INFO] [stderr] 90 | ((hash[2] as u32 & 0xff) << 8) | [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(hash[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/oath/hotp.rs:91:26 [INFO] [stderr] | [INFO] [stderr] 91 | (hash[3] as u32 & 0xff); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(hash[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: manual implementation of an assign operation [INFO] [stderr] --> src/oath/hotp.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | nb = nb / base_len; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `nb /= base_len` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/hotp.rs:166:34 [INFO] [stderr] | [INFO] [stderr] 166 | pub fn is_valid(&self, code: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `oath::hotp::HOTPBuilder` [INFO] [stderr] --> src/oath/hotp.rs:229:5 [INFO] [stderr] | [INFO] [stderr] 229 | / pub fn new() -> HOTPBuilder { [INFO] [stderr] 230 | | HOTPBuilder { [INFO] [stderr] 231 | | key: None, [INFO] [stderr] 232 | | counter: 0, [INFO] [stderr] ... | [INFO] [stderr] 237 | | } [INFO] [stderr] 238 | | } [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] 227 | impl Default for oath::hotp::HOTPBuilder { [INFO] [stderr] 228 | fn default() -> Self { [INFO] [stderr] 229 | Self::new() [INFO] [stderr] 230 | } [INFO] [stderr] 231 | } [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/oath/mod.rs:91:36 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn key(&mut self, key: &Vec) -> &mut $t { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 91 | pub fn key(&mut self, key: &[u8]) -> &mut $t { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `key.clone()` to [INFO] [stderr] | [INFO] [stderr] 92 | self.key = Some(key.to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:97:42 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn ascii_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:103:40 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn hex_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:112:43 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn base32_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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/oath/mod.rs:139:45 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn output_base(&mut self, base: &Vec) -> &mut $t { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 139 | pub fn output_base(&mut self, base: &[u8]) -> &mut $t { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `base.clone()` to [INFO] [stderr] | [INFO] [stderr] 140 | self.output_base = base.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/oath/hotp.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | / match self.runtime_error { [INFO] [stderr] 251 | | Some(e) => return Err(e), [INFO] [stderr] 252 | | None => (), [INFO] [stderr] 253 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(e) = self.runtime_error { return Err(e) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/oath/totp.rs:84:43 [INFO] [stderr] | [INFO] [stderr] 84 | (timestamp - self.initial_time) / self.period as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.period)` [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/totp.rs:127:34 [INFO] [stderr] | [INFO] [stderr] 127 | pub fn is_valid(&self, code: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/oath/totp.rs:129:24 [INFO] [stderr] | [INFO] [stderr] 129 | for counter in (base_counter - self.negative_tolerance).. [INFO] [stderr] | ________________________^ [INFO] [stderr] 130 | | (base_counter + self.positive_tolerance + 1) { [INFO] [stderr] | |___________________________________________________________________^ help: use: `((base_counter - self.negative_tolerance)..=base_counter + self.positive_tolerance)` [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 should consider adding a `Default` implementation for `oath::totp::TOTPBuilder` [INFO] [stderr] --> src/oath/totp.rs:200:5 [INFO] [stderr] | [INFO] [stderr] 200 | / pub fn new() -> TOTPBuilder { [INFO] [stderr] 201 | | TOTPBuilder { [INFO] [stderr] 202 | | key: None, [INFO] [stderr] 203 | | timestamp_offset: 0, [INFO] [stderr] ... | [INFO] [stderr] 212 | | } [INFO] [stderr] 213 | | } [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] 198 | impl Default for oath::totp::TOTPBuilder { [INFO] [stderr] 199 | fn default() -> Self { [INFO] [stderr] 200 | Self::new() [INFO] [stderr] 201 | } [INFO] [stderr] 202 | } [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/oath/mod.rs:91:36 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn key(&mut self, key: &Vec) -> &mut $t { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 91 | pub fn key(&mut self, key: &[u8]) -> &mut $t { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `key.clone()` to [INFO] [stderr] | [INFO] [stderr] 92 | self.key = Some(key.to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:97:42 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn ascii_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:103:40 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn hex_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:112:43 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn base32_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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/oath/mod.rs:139:45 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn output_base(&mut self, base: &Vec) -> &mut $t { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 139 | pub fn output_base(&mut self, base: &[u8]) -> &mut $t { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `base.clone()` to [INFO] [stderr] | [INFO] [stderr] 140 | self.output_base = base.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/oath/totp.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / match self.runtime_error { [INFO] [stderr] 265 | | Some(e) => return Err(e), [INFO] [stderr] 266 | | None => (), [INFO] [stderr] 267 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(e) = self.runtime_error { return Err(e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/pass/phc_encoding.rs:99:12 [INFO] [stderr] | [INFO] [stderr] 99 | if self.parameters_order.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.parameters_order.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: this loop could be written as a `for` loop [INFO] [stderr] --> src/pass/phc_encoding.rs:107:51 [INFO] [stderr] | [INFO] [stderr] 107 | while let Some(&(ref p, ref v)) = parameters.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `for &(ref p, ref v) in parameters { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/pass/phc_encoding.rs:143:56 [INFO] [stderr] | [INFO] [stderr] 143 | let mut parts: Vec<&str> = pch_formatted.split("$").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `'$'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/pass/phc_encoding.rs:160:29 [INFO] [stderr] | [INFO] [stderr] 160 | if segment.contains("=") { [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/pass/phc_encoding.rs:161:51 [INFO] [stderr] | [INFO] [stderr] 161 | let params: Vec<&str> = segment.split(",").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/pass/phc_encoding.rs:178:19 [INFO] [stderr] | [INFO] [stderr] 178 | } else if segment.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `segment.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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/pass/phc_encoding.rs:208:16 [INFO] [stderr] | [INFO] [stderr] 208 | if let None = self.id { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 209 | | return Err(ErrorCode::InvalidPasswordFormat); [INFO] [stderr] 210 | | } [INFO] [stderr] | |_________- help: try this: `if self.id.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/pass/phc_encoding.rs:226:16 [INFO] [stderr] | [INFO] [stderr] 226 | if let None = self.id { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 227 | | return Err(ErrorCode::InvalidPasswordFormat); [INFO] [stderr] 228 | | } [INFO] [stderr] | |_________- help: try this: `if self.id.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pass/mod.rs:250:27 [INFO] [stderr] | [INFO] [stderr] 250 | -> Result Result>, ErrorCode> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/pass/mod.rs:279:33 [INFO] [stderr] | [INFO] [stderr] 279 | let salt: Vec = hash_info.salt().unwrap_or(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `hash_info.salt().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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/pass/mod.rs:309:33 [INFO] [stderr] | [INFO] [stderr] 309 | let salt: Vec = hash_info.salt().unwrap_or(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `hash_info.salt().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/pass/mod.rs:433:5 [INFO] [stderr] | [INFO] [stderr] 433 | / match ring::pbkdf2::verify(algorithm, [INFO] [stderr] 434 | | iterations, [INFO] [stderr] 435 | | salt.as_ref(), [INFO] [stderr] 436 | | password.as_bytes(), [INFO] [stderr] ... | [INFO] [stderr] 439 | | Err(_) => false, [INFO] [stderr] 440 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 433 | ring::pbkdf2::verify(algorithm, [INFO] [stderr] 434 | iterations, [INFO] [stderr] 435 | salt.as_ref(), [INFO] [stderr] 436 | password.as_bytes(), [INFO] [stderr] 437 | password_hash.as_ref()).is_ok() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parser/hex.rs:61:20 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn from_hex(s: &String) -> Result, ()> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/oath/hotp.rs:89:27 [INFO] [stderr] | [INFO] [stderr] 89 | let snum: u32 = ((hash[0] as u32 & 0x7f) << 24) | ((hash[1] as u32 & 0xff) << 16) | [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(hash[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/oath/hotp.rs:89:61 [INFO] [stderr] | [INFO] [stderr] 89 | let snum: u32 = ((hash[0] as u32 & 0x7f) << 24) | ((hash[1] as u32 & 0xff) << 16) | [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(hash[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/oath/hotp.rs:90:27 [INFO] [stderr] | [INFO] [stderr] 90 | ((hash[2] as u32 & 0xff) << 8) | [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(hash[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/oath/hotp.rs:91:26 [INFO] [stderr] | [INFO] [stderr] 91 | (hash[3] as u32 & 0xff); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(hash[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: manual implementation of an assign operation [INFO] [stderr] --> src/oath/hotp.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | nb = nb / base_len; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `nb /= base_len` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/hotp.rs:166:34 [INFO] [stderr] | [INFO] [stderr] 166 | pub fn is_valid(&self, code: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `oath::hotp::HOTPBuilder` [INFO] [stderr] --> src/oath/hotp.rs:229:5 [INFO] [stderr] | [INFO] [stderr] 229 | / pub fn new() -> HOTPBuilder { [INFO] [stderr] 230 | | HOTPBuilder { [INFO] [stderr] 231 | | key: None, [INFO] [stderr] 232 | | counter: 0, [INFO] [stderr] ... | [INFO] [stderr] 237 | | } [INFO] [stderr] 238 | | } [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] 227 | impl Default for oath::hotp::HOTPBuilder { [INFO] [stderr] 228 | fn default() -> Self { [INFO] [stderr] 229 | Self::new() [INFO] [stderr] 230 | } [INFO] [stderr] 231 | } [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/oath/mod.rs:91:36 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn key(&mut self, key: &Vec) -> &mut $t { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 91 | pub fn key(&mut self, key: &[u8]) -> &mut $t { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `key.clone()` to [INFO] [stderr] | [INFO] [stderr] 92 | self.key = Some(key.to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:97:42 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn ascii_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:103:40 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn hex_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:112:43 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn base32_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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/oath/mod.rs:139:45 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn output_base(&mut self, base: &Vec) -> &mut $t { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/oath/hotp.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | builder_common!(HOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 139 | pub fn output_base(&mut self, base: &[u8]) -> &mut $t { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `base.clone()` to [INFO] [stderr] | [INFO] [stderr] 140 | self.output_base = base.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/oath/hotp.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | / match self.runtime_error { [INFO] [stderr] 251 | | Some(e) => return Err(e), [INFO] [stderr] 252 | | None => (), [INFO] [stderr] 253 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(e) = self.runtime_error { return Err(e) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/oath/hotp.rs:624:19 [INFO] [stderr] | [INFO] [stderr] 624 | for nb in vec![10, 42, 69, 1024, 0xffffff] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[10, 42, 69, 1024, 0xffffff]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: the loop variable `count` is used to index `examples` [INFO] [stderr] --> src/oath/hotp.rs:742:22 [INFO] [stderr] | [INFO] [stderr] 742 | for count in 0..examples.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] 742 | for (count, ) in examples.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/oath/totp.rs:84:43 [INFO] [stderr] | [INFO] [stderr] 84 | (timestamp - self.initial_time) / self.period as u64 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.period)` [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/totp.rs:127:34 [INFO] [stderr] | [INFO] [stderr] 127 | pub fn is_valid(&self, code: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/oath/totp.rs:129:24 [INFO] [stderr] | [INFO] [stderr] 129 | for counter in (base_counter - self.negative_tolerance).. [INFO] [stderr] | ________________________^ [INFO] [stderr] 130 | | (base_counter + self.positive_tolerance + 1) { [INFO] [stderr] | |___________________________________________________________________^ help: use: `((base_counter - self.negative_tolerance)..=base_counter + self.positive_tolerance)` [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 should consider adding a `Default` implementation for `oath::totp::TOTPBuilder` [INFO] [stderr] --> src/oath/totp.rs:200:5 [INFO] [stderr] | [INFO] [stderr] 200 | / pub fn new() -> TOTPBuilder { [INFO] [stderr] 201 | | TOTPBuilder { [INFO] [stderr] 202 | | key: None, [INFO] [stderr] 203 | | timestamp_offset: 0, [INFO] [stderr] ... | [INFO] [stderr] 212 | | } [INFO] [stderr] 213 | | } [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] 198 | impl Default for oath::totp::TOTPBuilder { [INFO] [stderr] 199 | fn default() -> Self { [INFO] [stderr] 200 | Self::new() [INFO] [stderr] 201 | } [INFO] [stderr] 202 | } [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/oath/mod.rs:91:36 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn key(&mut self, key: &Vec) -> &mut $t { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 91 | pub fn key(&mut self, key: &[u8]) -> &mut $t { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `key.clone()` to [INFO] [stderr] | [INFO] [stderr] 92 | self.key = Some(key.to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:97:42 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn ascii_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:103:40 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn hex_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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 `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/oath/mod.rs:112:43 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn base32_key(&mut self, key: &String) -> &mut $t { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [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/oath/mod.rs:139:45 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn output_base(&mut self, base: &Vec) -> &mut $t { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/oath/totp.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | builder_common!(TOTPBuilder); [INFO] [stderr] | ----------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 139 | pub fn output_base(&mut self, base: &[u8]) -> &mut $t { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `base.clone()` to [INFO] [stderr] | [INFO] [stderr] 140 | self.output_base = base.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/oath/totp.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | / match self.runtime_error { [INFO] [stderr] 265 | | Some(e) => return Err(e), [INFO] [stderr] 266 | | None => (), [INFO] [stderr] 267 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(e) = self.runtime_error { return Err(e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/oath/totp.rs:617:19 [INFO] [stderr] | [INFO] [stderr] 617 | for nb in vec![10, 42, 69, 1024, 0xffffff] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[10, 42, 69, 1024, 0xffffff]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/pass/phc_encoding.rs:99:12 [INFO] [stderr] | [INFO] [stderr] 99 | if self.parameters_order.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.parameters_order.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: this loop could be written as a `for` loop [INFO] [stderr] --> src/pass/phc_encoding.rs:107:51 [INFO] [stderr] | [INFO] [stderr] 107 | while let Some(&(ref p, ref v)) = parameters.next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `for &(ref p, ref v) in parameters { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/pass/phc_encoding.rs:143:56 [INFO] [stderr] | [INFO] [stderr] 143 | let mut parts: Vec<&str> = pch_formatted.split("$").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `'$'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/pass/phc_encoding.rs:160:29 [INFO] [stderr] | [INFO] [stderr] 160 | if segment.contains("=") { [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/pass/phc_encoding.rs:161:51 [INFO] [stderr] | [INFO] [stderr] 161 | let params: Vec<&str> = segment.split(",").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `','` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/pass/phc_encoding.rs:178:19 [INFO] [stderr] | [INFO] [stderr] 178 | } else if segment.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `segment.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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/pass/phc_encoding.rs:208:16 [INFO] [stderr] | [INFO] [stderr] 208 | if let None = self.id { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 209 | | return Err(ErrorCode::InvalidPasswordFormat); [INFO] [stderr] 210 | | } [INFO] [stderr] | |_________- help: try this: `if self.id.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/pass/phc_encoding.rs:226:16 [INFO] [stderr] | [INFO] [stderr] 226 | if let None = self.id { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 227 | | return Err(ErrorCode::InvalidPasswordFormat); [INFO] [stderr] 228 | | } [INFO] [stderr] | |_________- help: try this: `if self.id.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/pass/mod.rs:250:27 [INFO] [stderr] | [INFO] [stderr] 250 | -> Result Result>, ErrorCode> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/pass/mod.rs:279:33 [INFO] [stderr] | [INFO] [stderr] 279 | let salt: Vec = hash_info.salt().unwrap_or(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `hash_info.salt().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: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/pass/mod.rs:309:33 [INFO] [stderr] | [INFO] [stderr] 309 | let salt: Vec = hash_info.salt().unwrap_or(Vec::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `hash_info.salt().unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/pass/mod.rs:433:5 [INFO] [stderr] | [INFO] [stderr] 433 | / match ring::pbkdf2::verify(algorithm, [INFO] [stderr] 434 | | iterations, [INFO] [stderr] 435 | | salt.as_ref(), [INFO] [stderr] 436 | | password.as_bytes(), [INFO] [stderr] ... | [INFO] [stderr] 439 | | Err(_) => false, [INFO] [stderr] 440 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 433 | ring::pbkdf2::verify(algorithm, [INFO] [stderr] 434 | iterations, [INFO] [stderr] 435 | salt.as_ref(), [INFO] [stderr] 436 | password.as_bytes(), [INFO] [stderr] 437 | password_hash.as_ref()).is_ok() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/pass/mod.rs:733:34 [INFO] [stderr] | [INFO] [stderr] 733 | assert_eq!(p.1.split("$").collect::>().last().unwrap(), [INFO] [stderr] | ^^^ help: try using a char instead: `'$'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/pass/mod.rs:734:35 [INFO] [stderr] | [INFO] [stderr] 734 | hash.split("$").collect::>().last().unwrap()); [INFO] [stderr] | ^^^ help: try using a char instead: `'$'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parser/hex.rs:61:20 [INFO] [stderr] | [INFO] [stderr] 61 | pub fn from_hex(s: &String) -> Result, ()> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.64s [INFO] running `"docker" "inspect" "0c5b5138f77a177322d1e26e946b96aa6d3cd075a82832c0baccddcc8b436c3b"` [INFO] running `"docker" "rm" "-f" "0c5b5138f77a177322d1e26e946b96aa6d3cd075a82832c0baccddcc8b436c3b"` [INFO] [stdout] 0c5b5138f77a177322d1e26e946b96aa6d3cd075a82832c0baccddcc8b436c3b