[INFO] fetching crate rhe 0.1.0...
[INFO] checking rhe-0.1.0 against try#012cd62c9add58ab3910e44c137d87db3ab70f61 for pr-155915
[INFO] extracting crate rhe 0.1.0 into /workspace/builds/worker-4-tc2/source
[INFO] started tweaking crates.io crate rhe 0.1.0
[INFO] finished tweaking crates.io crate rhe 0.1.0
[INFO] tweaked toml for crates.io crate rhe 0.1.0 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate rhe 0.1.0 on toolchain 012cd62c9add58ab3910e44c137d87db3ab70f61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate rhe 0.1.0 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" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/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" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 70c228d6b96fef29948f26da19f82fa2c11f0742b1da0a92b53b6c0dcc4dda91
[INFO] running `Command { std: "docker" "start" "-a" "70c228d6b96fef29948f26da19f82fa2c11f0742b1da0a92b53b6c0dcc4dda91", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "70c228d6b96fef29948f26da19f82fa2c11f0742b1da0a92b53b6c0dcc4dda91", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "70c228d6b96fef29948f26da19f82fa2c11f0742b1da0a92b53b6c0dcc4dda91", kill_on_drop: false }`
[INFO] [stdout] 70c228d6b96fef29948f26da19f82fa2c11f0742b1da0a92b53b6c0dcc4dda91
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-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" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 59e080f391be2fa9e77035433bf4a0076d7c53ab609d90214f27e41586d13820
[INFO] running `Command { std: "docker" "start" "-a" "59e080f391be2fa9e77035433bf4a0076d7c53ab609d90214f27e41586d13820", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling hashbrown v0.17.0
[INFO] [stderr]    Compiling winnow v0.5.40
[INFO] [stderr]    Compiling target-lexicon v0.12.16
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling version-compare v0.2.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking dlib v0.5.3
[INFO] [stderr]    Compiling wayland-sys v0.31.11
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]     Checking scoped-tls v1.0.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling wayland-client v0.31.14
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling gio v0.18.4
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling cfg-expr v0.15.8
[INFO] [stderr]    Compiling x11 v2.21.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]    Compiling field-offset v0.3.6
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling gtk v0.18.2
[INFO] [stderr]    Compiling libxdo-sys v0.11.0
[INFO] [stderr]    Compiling drm-sys v0.8.1
[INFO] [stderr]     Checking xkeysym v0.2.1
[INFO] [stderr]    Compiling quick-xml v0.39.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling slotmap v1.1.1
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking cursor-icon v1.2.0
[INFO] [stderr]     Checking strict-num v0.1.1
[INFO] [stderr]     Checking as-raw-xcb-connection v1.0.1
[INFO] [stderr]     Checking memmap2 v0.9.10
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling drm-fourcc v2.2.0
[INFO] [stderr]     Checking unicode-segmentation v1.13.2
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling cc v1.2.59
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling tiny-xlib v0.2.5
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.10
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking roxmltree v0.20.0
[INFO] [stderr]     Checking tinyvec v1.11.0
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]    Compiling wayland-scanner v0.31.10
[INFO] [stderr]    Compiling winit v0.30.13
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking webpki-roots v1.0.7
[INFO] [stderr]     Checking fontconfig-parser v0.5.8
[INFO] [stderr]     Checking ttf-parser v0.21.1
[INFO] [stderr]     Checking unicode-bidi-mirroring v0.2.0
[INFO] [stderr]     Checking raw-window-handle v0.6.2
[INFO] [stderr]     Checking unicode-properties v0.1.4
[INFO] [stderr]     Checking libxdo v0.6.0
[INFO] [stderr]     Checking ctor v0.10.1
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking ttf-parser v0.20.0
[INFO] [stderr]     Checking unicode-script v0.5.8
[INFO] [stderr]     Checking zeno v0.3.3
[INFO] [stderr]     Checking unicode-ccc v0.2.0
[INFO] [stderr]     Checking yazi v0.2.1
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking unicode-bidi v0.3.18
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]    Compiling rhe v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling toml_datetime v0.6.3
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]     Checking sys-locale v0.3.2
[INFO] [stderr]     Checking unicode-linebreak v0.1.5
[INFO] [stderr]     Checking self_cell v1.2.2
[INFO] [stderr]     Checking rangemap v1.7.1
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking xkbcommon v0.9.0
[INFO] [stderr]    Compiling toml_edit v0.20.2
[INFO] [stderr]    Compiling wayland-backend v0.3.15
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking fontdb v0.16.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling toml v0.8.2
[INFO] [stderr]    Compiling proc-macro-crate v2.0.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling system-deps v6.2.2
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking rustls-webpki v0.103.12
[INFO] [stderr]     Checking drm-ffi v0.9.1
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]    Compiling glib-macros v0.18.5
[INFO] [stderr]    Compiling gtk3-macros v0.18.2
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking font-types v0.11.3
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking rustybuzz v0.14.1
[INFO] [stderr]     Checking drm v0.14.1
[INFO] [stderr]    Compiling glib-sys v0.18.1
[INFO] [stderr]    Compiling gobject-sys v0.18.0
[INFO] [stderr]    Compiling gio-sys v0.18.1
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]    Compiling gdk-sys v0.18.2
[INFO] [stderr]    Compiling pango-sys v0.18.0
[INFO] [stderr]    Compiling atk-sys v0.18.2
[INFO] [stderr]    Compiling cairo-sys-rs v0.18.2
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.18.0
[INFO] [stderr]    Compiling gtk-sys v0.18.2
[INFO] [stderr]     Checking read-fonts v0.37.0
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking glib v0.18.5
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking wayland-protocols v0.32.12
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking wayland-cursor v0.31.14
[INFO] [stderr]     Checking keyboard-types v0.7.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking libappindicator-sys v0.9.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking ureq v2.12.1
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking skrifa v0.40.0
[INFO] [stderr]     Checking cairo-rs v0.18.5
[INFO] [stderr]     Checking atk v0.18.2
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.12
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.12
[INFO] [stderr]     Checking softbuffer v0.4.8
[INFO] [stderr]     Checking swash v0.2.7
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking cosmic-text v0.14.2
[INFO] [stderr]     Checking gdk-pixbuf v0.18.5
[INFO] [stderr]     Checking pango v0.18.3
[INFO] [stderr]     Checking gdk v0.18.2
[INFO] [stderr]     Checking libappindicator v0.9.0
[INFO] [stderr]     Checking muda v0.17.2
[INFO] [stderr]     Checking tray-icon v0.22.0
[INFO] [stdout] warning: function `cmu_vowel_to_left` is never used
[INFO] [stdout]   --> src/bin/gen_briefs.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn cmu_vowel_to_left(ph: &str) -> Option<u8> {
[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 `finger_effort` is never used
[INFO] [stdout]    --> src/bin/gen_briefs.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn finger_effort(bits: u8) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `right_label` is never used
[INFO] [stdout]    --> src/bin/gen_briefs.rs:204:4
[INFO] [stdout]     |
[INFO] [stdout] 204 | fn right_label(right: u8) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `left_label` is never used
[INFO] [stdout]    --> src/bin/gen_briefs.rs:249:4
[INFO] [stdout]     |
[INFO] [stdout] 249 | fn left_label(left: u8) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_nearest_slot` is never used
[INFO] [stdout]    --> src/bin/gen_briefs.rs:871:4
[INFO] [stdout]     |
[INFO] [stdout] 871 | fn find_nearest_slot(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmu_vowel_to_left` is never used
[INFO] [stdout]   --> src/bin/gen_briefs.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn cmu_vowel_to_left(ph: &str) -> Option<u8> {
[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 `finger_effort` is never used
[INFO] [stdout]    --> src/bin/gen_briefs.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn finger_effort(bits: u8) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `right_label` is never used
[INFO] [stdout]    --> src/bin/gen_briefs.rs:204:4
[INFO] [stdout]     |
[INFO] [stdout] 204 | fn right_label(right: u8) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `left_label` is never used
[INFO] [stdout]    --> src/bin/gen_briefs.rs:249:4
[INFO] [stdout]     |
[INFO] [stdout] 249 | fn left_label(left: u8) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_nearest_slot` is never used
[INFO] [stdout]    --> src/bin/gen_briefs.rs:871:4
[INFO] [stdout]     |
[INFO] [stdout] 871 | fn find_nearest_slot(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::preferences::layout`
[INFO] [stdout]   --> src/input/evdev_backend.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::preferences::layout;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TrayIcon`
[INFO] [stdout]   --> src/tray.rs:27:23
[INFO] [stdout]    |
[INFO] [stdout] 27 | use tray_icon::{Icon, TrayIcon, TrayIconBuilder};
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::preferences::layout`
[INFO] [stdout]   --> src/input/evdev_backend.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::preferences::layout;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TrayIcon`
[INFO] [stdout]   --> src/tray.rs:27:23
[INFO] [stdout]    |
[INFO] [stdout] 27 | use tray_icon::{Icon, TrayIcon, TrayIconBuilder};
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/tray.rs:1960:33
[INFO] [stdout]      |
[INFO] [stdout] 1960 | ...                   Some(_) | None => CursorIcon::Default,
[INFO] [stdout]      |                       ^^^^^^^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/tray.rs:1960:33
[INFO] [stdout]      |
[INFO] [stdout] 1950 | ...                   Some(ResizeDirection::NorthWest)
[INFO] [stdout]      |                       -------------------------------- matches some of the same values
[INFO] [stdout] 1951 | ...                   | Some(ResizeDirection::SouthEast) => CursorIcon::NwseResize,
[INFO] [stdout]      |                         -------------------------------- matches some of the same values
[INFO] [stdout] 1952 | ...                   Some(ResizeDirection::NorthEast)
[INFO] [stdout]      |                       -------------------------------- matches some of the same values
[INFO] [stdout] 1953 | ...                   | Some(ResizeDirection::SouthWest) => CursorIcon::NeswResize,
[INFO] [stdout]      |                         -------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1960 | ...                   Some(_) | None => CursorIcon::Default,
[INFO] [stdout]      |                       ^^^^^^^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/tutor/ui/layout.rs:208:13
[INFO] [stdout]     |
[INFO] [stdout] 208 |         let span = span(window_w, window_h);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/tutor/wiki.rs:39:13
[INFO] [stdout]    |
[INFO] [stdout] 39 |         Err(e) => {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_briefs` is never used
[INFO] [stdout]   --> src/data.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn load_briefs() -> 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: variants `EscAlone` and `EscOrCapsPlusEsc` are never constructed
[INFO] [stdout]    --> src/input/evdev_backend.rs:93:5
[INFO] [stdout]     |
[INFO] [stdout]  91 | pub enum QuitTrigger {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout]  92 |     /// Esc alone quits. Caps lock passes through to OS, doesn't toggle.
[INFO] [stdout]  93 |     EscAlone,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     EscOrCapsPlusEsc,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `QuitTrigger` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_fallback`, and `in_number_mode` are never used
[INFO] [stdout]    --> src/interpreter.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl Interpreter {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn new(phonemes: PhonemeTable, briefs: BriefTable, dictionary: PhonemeDictionary) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn with_fallback(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn in_number_mode(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NullOutput` is never constructed
[INFO] [stdout]   --> src/output/mod.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct NullOutput;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/output/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl NullOutput {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `EMPTY` and `from_packed_u16` are never used
[INFO] [stdout]   --> src/preferences/chord_map.rs:22:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ChordKey {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 21 |     /// Empty chord (no keys pressed).
[INFO] [stdout] 22 |     pub const EMPTY: Self = Self(KeyMask::EMPTY);
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn from_packed_u16(packed: u16) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UndoPhoneme` is never constructed
[INFO] [stdout]   --> src/state_machine.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum Event {
[INFO] [stdout]    |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 37 |     UndoPhoneme,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Event` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `circle_icon` is never used
[INFO] [stdout]    --> src/tray.rs:316:4
[INFO] [stdout]     |
[INFO] [stdout] 316 | fn circle_icon(r: u8, g: u8, b: u8, a: u8) -> Icon {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_extra` and `matches` are never used
[INFO] [stdout]   --> src/tutor/drill.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Target {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 35 |     pub fn has_extra(&self, state: &KeyState) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn matches(&self, state: &KeyState) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `suffix_label` is never read
[INFO] [stdout]   --> src/tutor/drill.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct PracticeWord {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub suffix_label: Option<String>, // e.g. "~ing" for display
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `px` is never used
[INFO] [stdout]   --> src/tutor/ui/mod.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn px(span: f32, ru: f32, divisor: f32) -> i32 {
[INFO] [stdout]    |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mark_rows` and `mark_all` are never used
[INFO] [stdout]   --> src/tutor/ui/renderer_linux_softbuffer.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl<'a> SoftbufferBuffer<'a> {
[INFO] [stdout]    | ----------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn mark_rows(&self, _y_start: u32, _y_end: u32) {}
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 37 |     pub fn mark_all(&self) {}
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mark_rows` is never used
[INFO] [stdout]    --> src/tutor/ui/renderer_linux_softbuffer.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl Renderer {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn mark_rows(&mut self, y_start: u32, y_end: u32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HIT_HANDLE_TEXTBOX` is never used
[INFO] [stdout]   --> src/tutor/ui/compositor.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const HIT_HANDLE_TEXTBOX: u8 = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HIT_PRIMARY_BUTTON` is never used
[INFO] [stdout]   --> src/tutor/ui/compositor.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const HIT_PRIMARY_BUTTON: u8 = 5;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]     --> src/tutor/ui/compositor.rs:23:12
[INFO] [stdout]      |
[INFO] [stdout]   20 | impl TutorApp {
[INFO] [stdout]      | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]   23 |     pub fn window_controls_bounds(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  680 |     pub fn draw_plus_symbol(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  763 |     fn distance_to_capsule_local(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1173 |     pub fn draw_textbox(
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1668 |     pub fn apply_textbox_glow(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2601 |     pub fn draw_filled_circle(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2667 |     fn draw_indicator_hairline(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PATCH_COARSE` is never used
[INFO] [stdout]   --> src/tutor/ui/drawing.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const PATCH_COARSE: usize = 64;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PATCH_FINE` is never used
[INFO] [stdout]   --> src/tutor/ui/drawing.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const PATCH_FINE: usize = 16;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bw`, `bh`, `chrome_h`, `phoneme_space_w`, and `row_w` are never read
[INFO] [stdout]    --> src/tutor/ui/layout.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub struct TutorLayout {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] 158 |     // Window
[INFO] [stdout] 159 |     pub bw: i32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 160 |     pub bh: i32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 161 |     pub chrome_h: i32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub phoneme_space_w: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub row_w: i32,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/tutor/ui/text_rasterizing.rs:305:12
[INFO] [stdout]      |
[INFO] [stdout]    8 | impl TextRenderer {
[INFO] [stdout]      | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  305 |     pub fn draw_text_left(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  357 |     pub fn draw_text_right(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  573 |     pub fn draw_text_left_additive_u32(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  624 |     pub fn draw_text_center_additive_u32(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  675 |     pub fn draw_text_right_additive_u32(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  724 |     fn render_buffer_left_additive_u32(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  790 |     fn render_buffer_center_additive_u32(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  861 |     fn render_buffer_right_additive_u32(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  932 |     pub fn measure_text_width(&mut self, text: &str, size: f32, weight: u16, font: &str) -> f32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  957 |     pub fn render_char_additive(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1070 |     pub fn draw_text_scrollable_additive(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1119 |     pub fn render_char_additive_u32(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CANVAS_BG` is never used
[INFO] [stdout]   --> src/tutor/ui/theme.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const CANVAS_BG: u32 = fmt(0xFF_20_20_20);
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MOD_SECONDARY` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:107:11
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub const MOD_SECONDARY: u32 = fmt(0xFF_40_00_70);
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STEP_HINT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub const STEP_HINT: u32 = fmt(0xFF_B0_B0_B0);
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LIGHT_EDGE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:133:11
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub const LIGHT_EDGE: u32 = fmt(0xFF_60_60_60);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SHADOW_EDGE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const SHADOW_EDGE: u32 = fmt(0xFF_20_20_20);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILL` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FILL: u32 = fmt(0xFF_40_40_40);
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LABEL_COLOUR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:137:11
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub const LABEL_COLOUR: u32 = fmt(0xFF_80_80_80);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXT_COLOUR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:138:11
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub const TEXT_COLOUR: u32 = fmt(0xFF_D0_D0_D0);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXT_SELECTION_COLOUR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:139:11
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub const TEXT_SELECTION_COLOUR: u32 = fmt(0xFF_D0_D0_D0);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_BASE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:142:11
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub const BUTTON_BASE: u32 = fmt(0xFF_40_40_40);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_HAIRLINE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:145:11
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub const BUTTON_HAIRLINE: u32 = fmt(0xFF_32_32_32);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_BLUE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:146:11
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub const BUTTON_BLUE: u32 = fmt(0xFF_20_30_50);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_GREEN` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:147:11
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub const BUTTON_GREEN: u32 = fmt(0xFF_20_45_25);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_YELLOW` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const BUTTON_YELLOW: u32 = fmt(0xFF_50_45_20);
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_TEXT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:149:11
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub const BUTTON_TEXT: u32 = fmt(0xFF_D0_D0_D0);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTBOX_HOVER` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:152:11
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub const TEXTBOX_HOVER: u32 = fmt(0x00_0A_0A_0A);
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUERY_BUTTON_HOVER` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:153:11
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub const QUERY_BUTTON_HOVER: u32 = fmt(0x00_0F_0F_0F);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BACK_HEADER_HOVER` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:154:11
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub const BACK_HEADER_HOVER: u32 = fmt(0x00_0C_0C_0C);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTBOX_LIGHT_EDGE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:157:11
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub const TEXTBOX_LIGHT_EDGE: u32 = fmt(0xFF_44_41_37);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTBOX_SHADOW_EDGE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:158:11
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub const TEXTBOX_SHADOW_EDGE: u32 = fmt(0xFF_2B_34_37);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTBOX_FILL` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:159:11
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub const TEXTBOX_FILL: u32 = fmt(0xFF_06_08_09);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_DEFAULT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:162:11
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub const GLOW_DEFAULT: u32 = fmt(0x00_FF_FF_FF);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_ATTESTING` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:163:11
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub const GLOW_ATTESTING: u32 = fmt(0x00_FF_FF_40);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_SUCCESS` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:164:11
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub const GLOW_SUCCESS: u32 = fmt(0x00_40_FF_40);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_ERROR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:165:11
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub const GLOW_ERROR: u32 = fmt(0x00_FF_60_60);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLACEHOLDER_TEXT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:169:11
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub const PLACEHOLDER_TEXT: u32 = fmt(0xFF_80_80_80);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STATUS_TEXT_ATTESTING` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:170:11
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub const STATUS_TEXT_ATTESTING: u32 = fmt(0xFF_FF_FF_00);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STATUS_TEXT_ERROR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:171:11
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub const STATUS_TEXT_ERROR: u32 = fmt(0xFF_FF_00_00);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_MARKER` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:176:11
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub const DEBUG_MARKER: u32 = fmt(0xFE_FF_00_FF);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_LOGO` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:186:11
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub const FONT_LOGO: &str = "Oxanium";
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_UI` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:187:11
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub const FONT_UI: &str = "Josefin Slab";
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_USER_CONTENT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:188:11
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub const FONT_USER_CONTENT: &str = "Open Sans";
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_WEIGHT_USER_CONTENT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:189:11
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub const FONT_WEIGHT_USER_CONTENT: u16 = 400;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_sentences` is never used
[INFO] [stdout]   --> src/tutor/wiki.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn load_sentences() -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/tray.rs:1960:33
[INFO] [stdout]      |
[INFO] [stdout] 1960 | ...                   Some(_) | None => CursorIcon::Default,
[INFO] [stdout]      |                       ^^^^^^^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/tray.rs:1960:33
[INFO] [stdout]      |
[INFO] [stdout] 1950 | ...                   Some(ResizeDirection::NorthWest)
[INFO] [stdout]      |                       -------------------------------- matches some of the same values
[INFO] [stdout] 1951 | ...                   | Some(ResizeDirection::SouthEast) => CursorIcon::NwseResize,
[INFO] [stdout]      |                         -------------------------------- matches some of the same values
[INFO] [stdout] 1952 | ...                   Some(ResizeDirection::NorthEast)
[INFO] [stdout]      |                       -------------------------------- matches some of the same values
[INFO] [stdout] 1953 | ...                   | Some(ResizeDirection::SouthWest) => CursorIcon::NeswResize,
[INFO] [stdout]      |                         -------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1960 | ...                   Some(_) | None => CursorIcon::Default,
[INFO] [stdout]      |                       ^^^^^^^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `span`
[INFO] [stdout]    --> src/tutor/ui/layout.rs:208:13
[INFO] [stdout]     |
[INFO] [stdout] 208 |         let span = span(window_w, window_h);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_span`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/tutor/wiki.rs:39:13
[INFO] [stdout]    |
[INFO] [stdout] 39 |         Err(e) => {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_briefs` is never used
[INFO] [stdout]   --> src/data.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn load_briefs() -> 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: variants `EscAlone` and `EscOrCapsPlusEsc` are never constructed
[INFO] [stdout]    --> src/input/evdev_backend.rs:93:5
[INFO] [stdout]     |
[INFO] [stdout]  91 | pub enum QuitTrigger {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout]  92 |     /// Esc alone quits. Caps lock passes through to OS, doesn't toggle.
[INFO] [stdout]  93 |     EscAlone,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     EscOrCapsPlusEsc,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `QuitTrigger` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_fallback` and `in_number_mode` are never used
[INFO] [stdout]    --> src/interpreter.rs:203:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl Interpreter {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn with_fallback(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn in_number_mode(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NullOutput` is never constructed
[INFO] [stdout]   --> src/output/mod.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct NullOutput;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/output/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl NullOutput {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `EMPTY` is never used
[INFO] [stdout]   --> src/preferences/chord_map.rs:22:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ChordKey {
[INFO] [stdout]    | ------------- associated constant in this implementation
[INFO] [stdout] 21 |     /// Empty chord (no keys pressed).
[INFO] [stdout] 22 |     pub const EMPTY: Self = Self(KeyMask::EMPTY);
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `UndoPhoneme` is never constructed
[INFO] [stdout]   --> src/state_machine.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum Event {
[INFO] [stdout]    |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 37 |     UndoPhoneme,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Event` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `circle_icon` is never used
[INFO] [stdout]    --> src/tray.rs:316:4
[INFO] [stdout]     |
[INFO] [stdout] 316 | fn circle_icon(r: u8, g: u8, b: u8, a: u8) -> Icon {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_extra` and `matches` are never used
[INFO] [stdout]   --> src/tutor/drill.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Target {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 35 |     pub fn has_extra(&self, state: &KeyState) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn matches(&self, state: &KeyState) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `suffix_label` is never read
[INFO] [stdout]   --> src/tutor/drill.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct PracticeWord {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub suffix_label: Option<String>, // e.g. "~ing" for display
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `px` is never used
[INFO] [stdout]   --> src/tutor/ui/mod.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn px(span: f32, ru: f32, divisor: f32) -> i32 {
[INFO] [stdout]    |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mark_rows` and `mark_all` are never used
[INFO] [stdout]   --> src/tutor/ui/renderer_linux_softbuffer.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl<'a> SoftbufferBuffer<'a> {
[INFO] [stdout]    | ----------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn mark_rows(&self, _y_start: u32, _y_end: u32) {}
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 37 |     pub fn mark_all(&self) {}
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mark_rows` is never used
[INFO] [stdout]    --> src/tutor/ui/renderer_linux_softbuffer.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl Renderer {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn mark_rows(&mut self, y_start: u32, y_end: u32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HIT_HANDLE_TEXTBOX` is never used
[INFO] [stdout]   --> src/tutor/ui/compositor.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const HIT_HANDLE_TEXTBOX: u8 = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HIT_PRIMARY_BUTTON` is never used
[INFO] [stdout]   --> src/tutor/ui/compositor.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const HIT_PRIMARY_BUTTON: u8 = 5;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]     --> src/tutor/ui/compositor.rs:23:12
[INFO] [stdout]      |
[INFO] [stdout]   20 | impl TutorApp {
[INFO] [stdout]      | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]   23 |     pub fn window_controls_bounds(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  680 |     pub fn draw_plus_symbol(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  763 |     fn distance_to_capsule_local(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1173 |     pub fn draw_textbox(
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1668 |     pub fn apply_textbox_glow(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2601 |     pub fn draw_filled_circle(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2667 |     fn draw_indicator_hairline(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PATCH_COARSE` is never used
[INFO] [stdout]   --> src/tutor/ui/drawing.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const PATCH_COARSE: usize = 64;
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PATCH_FINE` is never used
[INFO] [stdout]   --> src/tutor/ui/drawing.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const PATCH_FINE: usize = 16;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bw`, `bh`, `chrome_h`, `phoneme_space_w`, and `row_w` are never read
[INFO] [stdout]    --> src/tutor/ui/layout.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub struct TutorLayout {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] 158 |     // Window
[INFO] [stdout] 159 |     pub bw: i32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 160 |     pub bh: i32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 161 |     pub chrome_h: i32,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub phoneme_space_w: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub row_w: i32,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/tutor/ui/text_rasterizing.rs:305:12
[INFO] [stdout]      |
[INFO] [stdout]    8 | impl TextRenderer {
[INFO] [stdout]      | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  305 |     pub fn draw_text_left(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  357 |     pub fn draw_text_right(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  573 |     pub fn draw_text_left_additive_u32(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  624 |     pub fn draw_text_center_additive_u32(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  675 |     pub fn draw_text_right_additive_u32(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  724 |     fn render_buffer_left_additive_u32(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  790 |     fn render_buffer_center_additive_u32(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  861 |     fn render_buffer_right_additive_u32(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  932 |     pub fn measure_text_width(&mut self, text: &str, size: f32, weight: u16, font: &str) -> f32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  957 |     pub fn render_char_additive(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1070 |     pub fn draw_text_scrollable_additive(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1119 |     pub fn render_char_additive_u32(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CANVAS_BG` is never used
[INFO] [stdout]   --> src/tutor/ui/theme.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const CANVAS_BG: u32 = fmt(0xFF_20_20_20);
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MOD_SECONDARY` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:107:11
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub const MOD_SECONDARY: u32 = fmt(0xFF_40_00_70);
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STEP_HINT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub const STEP_HINT: u32 = fmt(0xFF_B0_B0_B0);
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LIGHT_EDGE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:133:11
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub const LIGHT_EDGE: u32 = fmt(0xFF_60_60_60);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SHADOW_EDGE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:134:11
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub const SHADOW_EDGE: u32 = fmt(0xFF_20_20_20);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILL` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const FILL: u32 = fmt(0xFF_40_40_40);
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LABEL_COLOUR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:137:11
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub const LABEL_COLOUR: u32 = fmt(0xFF_80_80_80);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXT_COLOUR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:138:11
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub const TEXT_COLOUR: u32 = fmt(0xFF_D0_D0_D0);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXT_SELECTION_COLOUR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:139:11
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub const TEXT_SELECTION_COLOUR: u32 = fmt(0xFF_D0_D0_D0);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_BASE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:142:11
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub const BUTTON_BASE: u32 = fmt(0xFF_40_40_40);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_HAIRLINE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:145:11
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub const BUTTON_HAIRLINE: u32 = fmt(0xFF_32_32_32);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_BLUE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:146:11
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub const BUTTON_BLUE: u32 = fmt(0xFF_20_30_50);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_GREEN` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:147:11
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub const BUTTON_GREEN: u32 = fmt(0xFF_20_45_25);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_YELLOW` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const BUTTON_YELLOW: u32 = fmt(0xFF_50_45_20);
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUTTON_TEXT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:149:11
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub const BUTTON_TEXT: u32 = fmt(0xFF_D0_D0_D0);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTBOX_HOVER` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:152:11
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub const TEXTBOX_HOVER: u32 = fmt(0x00_0A_0A_0A);
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUERY_BUTTON_HOVER` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:153:11
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub const QUERY_BUTTON_HOVER: u32 = fmt(0x00_0F_0F_0F);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BACK_HEADER_HOVER` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:154:11
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub const BACK_HEADER_HOVER: u32 = fmt(0x00_0C_0C_0C);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTBOX_LIGHT_EDGE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:157:11
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub const TEXTBOX_LIGHT_EDGE: u32 = fmt(0xFF_44_41_37);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTBOX_SHADOW_EDGE` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:158:11
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub const TEXTBOX_SHADOW_EDGE: u32 = fmt(0xFF_2B_34_37);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEXTBOX_FILL` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:159:11
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub const TEXTBOX_FILL: u32 = fmt(0xFF_06_08_09);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_DEFAULT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:162:11
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub const GLOW_DEFAULT: u32 = fmt(0x00_FF_FF_FF);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_ATTESTING` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:163:11
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub const GLOW_ATTESTING: u32 = fmt(0x00_FF_FF_40);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_SUCCESS` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:164:11
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub const GLOW_SUCCESS: u32 = fmt(0x00_40_FF_40);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_ERROR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:165:11
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub const GLOW_ERROR: u32 = fmt(0x00_FF_60_60);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLACEHOLDER_TEXT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:169:11
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub const PLACEHOLDER_TEXT: u32 = fmt(0xFF_80_80_80);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STATUS_TEXT_ATTESTING` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:170:11
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub const STATUS_TEXT_ATTESTING: u32 = fmt(0xFF_FF_FF_00);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STATUS_TEXT_ERROR` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:171:11
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub const STATUS_TEXT_ERROR: u32 = fmt(0xFF_FF_00_00);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEBUG_MARKER` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:176:11
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub const DEBUG_MARKER: u32 = fmt(0xFE_FF_00_FF);
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_LOGO` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:186:11
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub const FONT_LOGO: &str = "Oxanium";
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_UI` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:187:11
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub const FONT_UI: &str = "Josefin Slab";
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_USER_CONTENT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:188:11
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub const FONT_USER_CONTENT: &str = "Open Sans";
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_WEIGHT_USER_CONTENT` is never used
[INFO] [stdout]    --> src/tutor/ui/theme.rs:189:11
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub const FONT_WEIGHT_USER_CONTENT: u16 = 400;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_sentences` is never used
[INFO] [stdout]   --> src/tutor/wiki.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn load_sentences() -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 05s
[INFO] running `Command { std: "docker" "inspect" "59e080f391be2fa9e77035433bf4a0076d7c53ab609d90214f27e41586d13820", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "59e080f391be2fa9e77035433bf4a0076d7c53ab609d90214f27e41586d13820", kill_on_drop: false }`
[INFO] [stdout] 59e080f391be2fa9e77035433bf4a0076d7c53ab609d90214f27e41586d13820
