[INFO] cloning repository https://github.com/Keyhammer/Keyhammer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Keyhammer/Keyhammer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKeyhammer%2FKeyhammer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKeyhammer%2FKeyhammer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0121cf11f643867d3971339bf2ceca7c3a983fec
[INFO] testing Keyhammer/Keyhammer against 1.95.0 for beta-1.96-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKeyhammer%2FKeyhammer" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Keyhammer/Keyhammer
[INFO] finished tweaking git repo https://github.com/Keyhammer/Keyhammer
[INFO] tweaked toml for git repo https://github.com/Keyhammer/Keyhammer written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Keyhammer/Keyhammer on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Keyhammer/Keyhammer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.117
[INFO] [stderr]   Downloaded winapi-util v0.1.11
[INFO] [stderr]   Downloaded plotters-svg v0.3.7
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.117
[INFO] [stderr]   Downloaded tinytemplate v1.2.1
[INFO] [stderr]   Downloaded anes v0.1.6
[INFO] [stderr]   Downloaded hermit-abi v0.5.2
[INFO] [stderr]   Downloaded half v2.7.1
[INFO] [stderr]   Downloaded criterion-plot v0.5.0
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.48
[INFO] [stderr]   Downloaded js-sys v0.3.94
[INFO] [stderr]   Downloaded plotters v0.3.7
[INFO] [stderr]   Downloaded rayon v1.11.0
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.117
[INFO] [stderr]   Downloaded oorandom v11.1.5
[INFO] [stderr]   Downloaded rayon-core v1.13.0
[INFO] [stderr]   Downloaded clap v4.6.0
[INFO] [stderr]   Downloaded is-terminal v0.4.17
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.117
[INFO] [stderr]   Downloaded plotters-backend v0.3.7
[INFO] [stderr]   Downloaded cast v0.3.0
[INFO] [stderr]   Downloaded criterion v0.5.1
[INFO] [stderr]   Downloaded itertools v0.10.5
[INFO] [stderr]   Downloaded web-sys v0.3.94
[INFO] [stderr]   Downloaded libc v0.2.184
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e1bb239b5ee01e1cb3f24888f1dd5f8eca07fd24884b6b453ae327fbd2effefa
[INFO] running `Command { std: "docker" "start" "-a" "e1bb239b5ee01e1cb3f24888f1dd5f8eca07fd24884b6b453ae327fbd2effefa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e1bb239b5ee01e1cb3f24888f1dd5f8eca07fd24884b6b453ae327fbd2effefa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e1bb239b5ee01e1cb3f24888f1dd5f8eca07fd24884b6b453ae327fbd2effefa", kill_on_drop: false }`
[INFO] [stdout] e1bb239b5ee01e1cb3f24888f1dd5f8eca07fd24884b6b453ae327fbd2effefa
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a64c045cffd6c7d4e519688408acf535d1eb229aa44a93adbacb42e076a9bc9f
[INFO] running `Command { std: "docker" "start" "-a" "a64c045cffd6c7d4e519688408acf535d1eb229aa44a93adbacb42e076a9bc9f", kill_on_drop: false }`
[INFO] [stderr]    Compiling keyhammer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/index.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let n = terms.len();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `strip_diacritics` is never used
[INFO] [stdout]  --> src/normalize.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn strip_diacritics(input: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_char` is never used
[INFO] [stdout]   --> src/normalize.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn normalize_char(c: char) -> char {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `QueryOp` is never used
[INFO] [stdout]   --> src/query.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum QueryOp {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/query.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn parse(input: &str) -> Vec<QueryOp> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_token` is never used
[INFO] [stdout]   --> src/query.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn parse_token(token: &str) -> QueryOp {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `matches_op` is never used
[INFO] [stdout]   --> src/query.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn matches_op(term: &str, op: &QueryOp) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LogicalExpr` is never used
[INFO] [stdout]   --> src/query.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum LogicalExpr {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `matches` is never used
[INFO] [stdout]   --> src/query.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl LogicalExpr {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 71 |     /// Evaluate the expression against a term.
[INFO] [stdout] 72 |     pub fn matches(&self, term: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_logical` is never used
[INFO] [stdout]   --> src/query.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn parse_logical(input: &str) -> LogicalExpr {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.82s
[INFO] running `Command { std: "docker" "inspect" "a64c045cffd6c7d4e519688408acf535d1eb229aa44a93adbacb42e076a9bc9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a64c045cffd6c7d4e519688408acf535d1eb229aa44a93adbacb42e076a9bc9f", kill_on_drop: false }`
[INFO] [stdout] a64c045cffd6c7d4e519688408acf535d1eb229aa44a93adbacb42e076a9bc9f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 295e80da551a7a79ba7fa24f009a0355bb856c40cc4bb64e1e1d351ac628426f
[INFO] running `Command { std: "docker" "start" "-a" "295e80da551a7a79ba7fa24f009a0355bb856c40cc4bb64e1e1d351ac628426f", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling regex-syntax v0.8.10
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling itoa v1.0.18
[INFO] [stderr]    Compiling anstyle v1.0.14
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling clap_lex v1.1.0
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling clap_builder v4.6.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling is-terminal v0.4.17
[INFO] [stderr]    Compiling rayon v1.11.0
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling clap v4.6.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/index.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let n = terms.len();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `strip_diacritics` is never used
[INFO] [stdout]  --> src/normalize.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn strip_diacritics(input: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_char` is never used
[INFO] [stdout]   --> src/normalize.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn normalize_char(c: char) -> char {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `QueryOp` is never used
[INFO] [stdout]   --> src/query.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum QueryOp {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/query.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn parse(input: &str) -> Vec<QueryOp> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_token` is never used
[INFO] [stdout]   --> src/query.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn parse_token(token: &str) -> QueryOp {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `matches_op` is never used
[INFO] [stdout]   --> src/query.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn matches_op(term: &str, op: &QueryOp) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LogicalExpr` is never used
[INFO] [stdout]   --> src/query.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum LogicalExpr {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `matches` is never used
[INFO] [stdout]   --> src/query.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl LogicalExpr {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 71 |     /// Evaluate the expression against a term.
[INFO] [stdout] 72 |     pub fn matches(&self, term: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_logical` is never used
[INFO] [stdout]   --> src/query.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn parse_logical(input: &str) -> LogicalExpr {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling regex v1.12.3
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling criterion v0.5.1
[INFO] [stderr]    Compiling keyhammer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/index.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let n = terms.len();
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 53.50s
[INFO] running `Command { std: "docker" "inspect" "295e80da551a7a79ba7fa24f009a0355bb856c40cc4bb64e1e1d351ac628426f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "295e80da551a7a79ba7fa24f009a0355bb856c40cc4bb64e1e1d351ac628426f", kill_on_drop: false }`
[INFO] [stdout] 295e80da551a7a79ba7fa24f009a0355bb856c40cc4bb64e1e1d351ac628426f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] d7a9d326e843d85731e9f1bdf6add908dbe252164e4ff9439faf2f52fdf8c09c
[INFO] running `Command { std: "docker" "start" "-a" "d7a9d326e843d85731e9f1bdf6add908dbe252164e4ff9439faf2f52fdf8c09c", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `n`
[INFO] [stderr]   --> src/index.rs:67:13
[INFO] [stderr]    |
[INFO] [stderr] 67 |         let n = terms.len();
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `strip_diacritics` is never used
[INFO] [stderr]  --> src/normalize.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub fn strip_diacritics(input: &str) -> String {
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `normalize_char` is never used
[INFO] [stderr]   --> src/normalize.rs:20:4
[INFO] [stderr]    |
[INFO] [stderr] 20 | fn normalize_char(c: char) -> char {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `QueryOp` is never used
[INFO] [stderr]   --> src/query.rs:13:10
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub enum QueryOp {
[INFO] [stderr]    |          ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse` is never used
[INFO] [stderr]   --> src/query.rs:24:8
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub fn parse(input: &str) -> Vec<QueryOp> {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_token` is never used
[INFO] [stderr]   --> src/query.rs:30:4
[INFO] [stderr]    |
[INFO] [stderr] 30 | fn parse_token(token: &str) -> QueryOp {
[INFO] [stderr]    |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `matches_op` is never used
[INFO] [stderr]   --> src/query.rs:49:8
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub fn matches_op(term: &str, op: &QueryOp) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `LogicalExpr` is never used
[INFO] [stderr]   --> src/query.rs:64:10
[INFO] [stderr]    |
[INFO] [stderr] 64 | pub enum LogicalExpr {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `matches` is never used
[INFO] [stderr]   --> src/query.rs:72:12
[INFO] [stderr]    |
[INFO] [stderr] 70 | impl LogicalExpr {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] 71 |     /// Evaluate the expression against a term.
[INFO] [stderr] 72 |     pub fn matches(&self, term: &str) -> bool {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_logical` is never used
[INFO] [stderr]   --> src/query.rs:85:8
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn parse_logical(input: &str) -> LogicalExpr {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `keyhammer` (lib) generated 10 warnings (run `cargo fix --lib -p keyhammer` to apply 1 suggestion)
[INFO] [stderr] warning: `keyhammer` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/keyhammer-eee75d8ae77dc86d)
[INFO] [stdout] 
[INFO] [stdout] running 79 tests
[INFO] [stdout] test altered::tests::hamming_identical ... ok
[INFO] [stdout] test columnar::tests::different_lengths ... ok
[INFO] [stdout] test altered::tests::cached_stays_in_sync ... ok
[INFO] [stdout] test document::tests::basic_doc_search ... ok
[INFO] [stdout] test altered::tests::hamming_one_diff ... ok
[INFO] [stdout] test altered::tests::lcp_basic ... ok
[INFO] [stdout] test altered::tests::pivot_alter_reduces_distance ... ok
[INFO] [stdout] test columnar::tests::empty_query ... ok
[INFO] [stdout] test columnar::tests::one_mismatch ... ok
[INFO] [stdout] test columnar::tests::respects_max_distance ... ok
[INFO] [stdout] test document::tests::category_search ... ok
[INFO] [stdout] test document::tests::field_matches_reported ... ok
[INFO] [stdout] test document::tests::typo_in_field ... ok
[INFO] [stdout] test document::tests::threshold_filters ... ok
[INFO] [stdout] test encoding::tests::case_insensitive ... ok
[INFO] [stdout] test encoding::tests::digits_grouped ... ok
[INFO] [stdout] test encoding::tests::identical_zero ... ok
[INFO] [stdout] test encoding::tests::length_penalized ... ok
[INFO] [stdout] test document::tests::weighted_fields ... ok
[INFO] [stdout] test encoding::tests::vowels_close ... ok
[INFO] [stdout] test fingerprint::tests::close_filter ... ok
[INFO] [stdout] test fingerprint::tests::identical ... ok
[INFO] [stdout] test fingerprint::tests::insertion ... ok
[INFO] [stdout] test encoding::tests::neighbors_closer ... ok
[INFO] [stdout] test fingerprint::tests::numbers ... ok
[INFO] [stdout] test fingerprint::tests::anagram ... ok
[INFO] [stdout] test fingerprint::tests::spaces ... ok
[INFO] [stdout] test fingerprint::tests::substitution_not_deletion ... ok
[INFO] [stdout] test index::tests::empty_input_errors ... ok
[INFO] [stdout] test columnar::tests::exact_match ... ok
[INFO] [stdout] test index::tests::exact_match_highest_score ... ok
[INFO] [stdout] test fingerprint::tests::symbols ... ok
[INFO] [stdout] test fingerprint::tests::transposition_same_fp ... ok
[INFO] [stdout] test index::tests::basic_search ... ok
[INFO] [stdout] test index::tests::finds_transposition_typo ... ok
[INFO] [stdout] test index::tests::finds_insertion_typo ... ok
[INFO] [stdout] test encoding::tests::vowel_swap_closer_than_unlikely ... ok
[INFO] [stdout] test encoding::tests::normalized_range ... ok
[INFO] [stdout] test index::tests::transposition_ranks_higher ... ok
[INFO] [stdout] test normalize::tests::basic_accents ... ok
[INFO] [stdout] test normalize::tests::mixed ... ok
[INFO] [stdout] test normalize::tests::german ... ok
[INFO] [stdout] test normalize::tests::spanish ... ok
[INFO] [stdout] test inverter::tests::simple_inversion ... ok
[INFO] [stdout] test normalize::tests::no_accents_unchanged ... ok
[INFO] [stdout] test index::tests::small_dataset_uses_brute ... ok
[INFO] [stdout] test query::tests::logical_and ... ok
[INFO] [stdout] test query::tests::matches_exact ... ok
[INFO] [stdout] test query::tests::matches_not ... ok
[INFO] [stdout] test query::tests::matches_prefix ... ok
[INFO] [stdout] test query::tests::matches_suffix ... ok
[INFO] [stdout] test query::tests::parse_exact ... ok
[INFO] [stdout] test query::tests::parse_fuzzy ... ok
[INFO] [stdout] test query::tests::parse_multi ... ok
[INFO] [stdout] test query::tests::parse_not ... ok
[INFO] [stdout] test query::tests::parse_not_prefix ... ok
[INFO] [stdout] test query::tests::parse_not_suffix ... ok
[INFO] [stdout] test query::tests::parse_prefix ... ok
[INFO] [stdout] test query::tests::parse_suffix ... ok
[INFO] [stdout] test scorer::tests::adjacent_beats_distant ... ok
[INFO] [stdout] test scorer::tests::early_error_penalized ... ok
[INFO] [stdout] test scorer::tests::identical ... ok
[INFO] [stdout] test scorer::tests::symmetric ... ok
[INFO] [stdout] test scorer::tests::transposition_beats_random ... ok
[INFO] [stdout] test tree::tests::exact_match ... ok
[INFO] [stdout] test query::tests::logical_or ... ok
[INFO] [stdout] test query::tests::logical_or_with_and ... ok
[INFO] [stdout] test tree::tests::pruning_reduces_results ... ok
[INFO] [stdout] test tree::tests::one_mismatch ... ok
[INFO] [stdout] test variants::tests::deletion_empty ... ok
[INFO] [stdout] test tree::tests::no_match_beyond_radius ... ok
[INFO] [stdout] test variants::tests::deletion ... ok
[INFO] [stdout] test variants::tests::transposition ... ok
[INFO] [stdout] test variants::tests::transposition_single ... ok
[INFO] [stdout] test variants::tests::transposition_skips_repeated ... ok
[INFO] [stdout] test tree::tests::lazy_construction_works ... ok
[INFO] [stdout] test fingerprint::tests::deletion ... ok
[INFO] [stdout] test index::tests::finds_deletion_typo ... ok
[INFO] [stdout] test index::tests::large_dataset_builds_tree ... ok
[INFO] [stderr]      Running tests/correctness.rs (/opt/rustwide/target/debug/deps/correctness-1fb6cb2dcbdef6e1)
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 79 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test finds_fuzzy_match ... ok
[INFO] [stdout] test matches_brute_force ... ok
[INFO] [stdout] test score_ordering_makes_sense ... ok
[INFO] [stdout] test finds_exact_match ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/stress.rs (/opt/rustwide/target/debug/deps/stress-091d9748e1a586ea)
[INFO] [stdout] 
[INFO] [stdout] running 26 tests
[INFO] [stdout] test empty_query_string ... ok
[INFO] [stdout] test all_anagrams_same_fingerprint ... ok
[INFO] [stdout] test all_terms_same_length_max_diversity ... ok
[INFO] [stdout] test adversarial_repeated_char ... ok
[INFO] [stdout] test k_too_large_errors ... ok
[INFO] [stdout] test k_larger_than_term_length ... ok
[INFO] [stdout] test query_longer_than_all_terms ... ok
[INFO] [stdout] test mixed_lengths_extreme ... ok
[INFO] [stdout] test all_identical_terms ... ok
[INFO] [stdout] test repeated_build_drop ... ok
[INFO] [stdout] test numbers_and_symbols ... ok
[INFO] [stdout] test every_term_is_prefix_of_next ... ok
[INFO] [stdout] test score_ordering_is_consistent ... ok
[INFO] [stdout] test single_term ... ok
[INFO] [stdout] test query_shares_zero_chars_with_terms ... ok
[INFO] [stdout] test single_char_terms ... ok
[INFO] [stdout] test unicode_in_terms ... ok
[INFO] [stdout] test brute_vs_tree_5k ... ok
[INFO] [stdout] test worst_case_all_similar ... ok
[INFO] [stdout] test two_char_terms_deletion ... ok
[INFO] [stdout] test very_long_term ... ok
[INFO] [stdout] test scale_5k_terms ... ok
[INFO] [stdout] test scale_10k_terms ... ok
[INFO] [stdout] test scale_20k_terms ... ok
[INFO] [stdout] test very_long_query ... ok
[INFO] [stdout] test many_queries_same_index ... ok
[INFO] [stderr]    Doc-tests keyhammer
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 28.03s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 6 tests
[INFO] [stdout] test src/document.rs - document::Error (line 7) ... ok
[INFO] [stdout] test src/scorer.rs - scorer::KeyboardLayout (line 15) ... ok
[INFO] [stdout] test src/encoding.rs - encoding::KeyboardLayout (line 10) ... ok
[INFO] [stdout] test src/document.rs - document::Result (line 7) ... ok
[INFO] [stdout] test src/lib.rs - (line 8) ... ok
[INFO] [stdout] test src/document.rs - document (line 7) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 1.30s; merged doctests compilation took 1.22s
[INFO] running `Command { std: "docker" "inspect" "d7a9d326e843d85731e9f1bdf6add908dbe252164e4ff9439faf2f52fdf8c09c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d7a9d326e843d85731e9f1bdf6add908dbe252164e4ff9439faf2f52fdf8c09c", kill_on_drop: false }`
[INFO] [stdout] d7a9d326e843d85731e9f1bdf6add908dbe252164e4ff9439faf2f52fdf8c09c
