[INFO] cloning repository https://github.com/Mvmo/letter
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Mvmo/letter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMvmo%2Fletter", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMvmo%2Fletter'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 647d2afc2c461e85f3f2eca73cfb4227b5115370
[INFO] checking Mvmo/letter against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMvmo%2Fletter" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Mvmo/letter
[INFO] finished tweaking git repo https://github.com/Mvmo/letter
[INFO] tweaked toml for git repo https://github.com/Mvmo/letter written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Mvmo/letter 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/Mvmo/letter 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]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rustic-fuzz v0.1.0
[INFO] [stderr]   Downloaded indoc v2.0.3
[INFO] [stderr]   Downloaded sha2 v0.10.7
[INFO] [stderr]   Downloaded pest_generator v2.7.3
[INFO] [stderr]   Downloaded thiserror-impl v1.0.48
[INFO] [stderr]   Downloaded serde v1.0.181
[INFO] [stderr]   Downloaded hashlink v0.8.3
[INFO] [stderr]   Downloaded thiserror v1.0.48
[INFO] [stderr]   Downloaded pest_meta v2.7.3
[INFO] [stderr]   Downloaded fallible-iterator v0.2.0
[INFO] [stderr]   Downloaded pest_derive v2.7.3
[INFO] [stderr]   Downloaded pest v2.7.3
[INFO] [stderr]   Downloaded memchr v2.6.3
[INFO] [stderr]   Downloaded rusqlite v0.29.0
[INFO] [stderr]   Downloaded hashbrown v0.14.0
[INFO] [stderr]   Downloaded cc v1.0.82
[INFO] [stderr]   Downloaded ratatui v0.22.0
[INFO] [stderr]   Downloaded syn v2.0.31
[INFO] [stderr]   Downloaded libsqlite3-sys v0.26.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 9ac02780cbb1b8ed0047b8383087975d4a3c046f6c0964b06c2f62f78c08e5d1
[INFO] running `Command { std: "docker" "start" "-a" "9ac02780cbb1b8ed0047b8383087975d4a3c046f6c0964b06c2f62f78c08e5d1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9ac02780cbb1b8ed0047b8383087975d4a3c046f6c0964b06c2f62f78c08e5d1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9ac02780cbb1b8ed0047b8383087975d4a3c046f6c0964b06c2f62f78c08e5d1", kill_on_drop: false }`
[INFO] [stdout] 9ac02780cbb1b8ed0047b8383087975d4a3c046f6c0964b06c2f62f78c08e5d1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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=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" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 82135cf022d59be4c38d4a811e6db1f471670404d114ba7023d5346e82b323e9
[INFO] running `Command { std: "docker" "start" "-a" "82135cf022d59be4c38d4a811e6db1f471670404d114ba7023d5346e82b323e9", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.147
[INFO] [stderr]    Compiling proc-macro2 v1.0.66
[INFO] [stderr]    Compiling unicode-ident v1.0.11
[INFO] [stderr]    Compiling thiserror v1.0.48
[INFO] [stderr]    Compiling parking_lot_core v0.9.8
[INFO] [stderr]     Checking smallvec v1.11.0
[INFO] [stderr]    Compiling signal-hook v0.3.17
[INFO] [stderr]     Checking log v0.4.19
[INFO] [stderr]    Compiling memchr v2.6.3
[INFO] [stderr]     Checking once_cell v1.18.0
[INFO] [stderr]    Compiling pkg-config v0.3.27
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling ahash v0.8.3
[INFO] [stderr]    Compiling ucd-trie v0.1.6
[INFO] [stderr]     Checking allocator-api2 v0.2.16
[INFO] [stderr]    Compiling paste v1.0.14
[INFO] [stderr]     Checking bitflags v2.3.3
[INFO] [stderr]     Checking deranged v0.3.7
[INFO] [stderr]     Checking time-core v0.1.1
[INFO] [stderr]     Checking num_threads v0.1.6
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]    Compiling indoc v2.0.3
[INFO] [stderr]     Checking unicode-width v0.1.10
[INFO] [stderr]     Checking unicode-segmentation v1.10.1
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking fallible-iterator v0.2.0
[INFO] [stderr]     Checking hashbrown v0.14.0
[INFO] [stderr]     Checking rustic-fuzz v0.1.0
[INFO] [stderr]     Checking dotenv v0.15.0
[INFO] [stderr]     Checking uuid v1.4.1
[INFO] [stderr]     Checking hashlink v0.8.3
[INFO] [stderr]    Compiling cc v1.0.82
[INFO] [stderr]    Compiling quote v1.0.33
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking mio v0.8.8
[INFO] [stderr]     Checking time v0.3.25
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]    Compiling syn v2.0.31
[INFO] [stderr]     Checking signal-hook-mio v0.2.3
[INFO] [stderr]     Checking crossterm v0.26.1
[INFO] [stderr]     Checking crossterm v0.25.0
[INFO] [stderr]    Compiling libsqlite3-sys v0.26.0
[INFO] [stderr]     Checking ratatui v0.22.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.48
[INFO] [stderr]    Compiling pest v2.7.3
[INFO] [stderr]    Compiling pest_meta v2.7.3
[INFO] [stderr]    Compiling pest_generator v2.7.3
[INFO] [stderr]    Compiling pest_derive v2.7.3
[INFO] [stderr]     Checking rusqlite v0.29.0
[INFO] [stderr]     Checking letter v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parser/mod.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let mut identifier = pair.next().unwrap().as_str().to_string();
[INFO] [stdout]    |                 ----^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/parser/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Int(i32),
[INFO] [stdout]    |     --- ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expression` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 12 -     Int(i32),
[INFO] [stdout] 12 +     Int(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Float`, `Bool`, and `Char` are never constructed
[INFO] [stdout]   --> src/parser/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | enum Expression {
[INFO] [stdout]    |      ---------- variants in this enum
[INFO] [stdout] 12 |     Int(i32),
[INFO] [stdout] 13 |     Float(f32),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 14 |     Bool(bool),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     Char(char)
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expression` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `identifier`, `type_identifier`, and `value` are never read
[INFO] [stdout]   --> src/parser/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Let {
[INFO] [stdout]    |     --- fields in this variant
[INFO] [stdout] 21 |         identifier: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 22 |         type_identifier: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |         value: Expression
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Statement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `identifier`, `return_type`, `params`, and `body` are never read
[INFO] [stdout]   --> src/parser/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     Fn {
[INFO] [stdout]    |     -- fields in this variant
[INFO] [stdout] 26 |         identifier: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 27 |         return_type: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 28 |         params: Vec<(String, String)>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 29 |         body: Option<()>
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Statement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/parser/mod.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Stmt(Statement)
[INFO] [stdout]    |     ---- ^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AstNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 36 -     Stmt(Statement)
[INFO] [stdout] 36 +     Stmt(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Expr` is never constructed
[INFO] [stdout]   --> src/parser/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | enum AstNode {
[INFO] [stdout]    |      ------- variant in this enum
[INFO] [stdout] 35 |     Expr(Expression),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AstNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/ui/textarea.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |             _ => {}
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/ui/textarea.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 27 |             LetterEvent::CommandEvent(x) => {
[INFO] [stdout]    |             ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 49 |             LetterEvent::RawKeyInputEvent(key_code) => {
[INFO] [stdout]    |             --------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 56 |             _ => {}
[INFO] [stdout]    |             ^ collectively making this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parser/mod.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let mut identifier = pair.next().unwrap().as_str().to_string();
[INFO] [stdout]    |                 ----^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/parser/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Int(i32),
[INFO] [stdout]    |     --- ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expression` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 12 -     Int(i32),
[INFO] [stdout] 12 +     Int(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Float`, `Bool`, and `Char` are never constructed
[INFO] [stdout]   --> src/parser/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | enum Expression {
[INFO] [stdout]    |      ---------- variants in this enum
[INFO] [stdout] 12 |     Int(i32),
[INFO] [stdout] 13 |     Float(f32),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 14 |     Bool(bool),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     Char(char)
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Expression` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `identifier`, `type_identifier`, and `value` are never read
[INFO] [stdout]   --> src/parser/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     Let {
[INFO] [stdout]    |     --- fields in this variant
[INFO] [stdout] 21 |         identifier: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 22 |         type_identifier: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 23 |         value: Expression
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Statement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `identifier`, `return_type`, `params`, and `body` are never read
[INFO] [stdout]   --> src/parser/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     Fn {
[INFO] [stdout]    |     -- fields in this variant
[INFO] [stdout] 26 |         identifier: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 27 |         return_type: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 28 |         params: Vec<(String, String)>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 29 |         body: Option<()>
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Statement` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/parser/mod.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Stmt(Statement)
[INFO] [stdout]    |     ---- ^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AstNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 36 -     Stmt(Statement)
[INFO] [stdout] 36 +     Stmt(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Expr` is never constructed
[INFO] [stdout]   --> src/parser/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | enum AstNode {
[INFO] [stdout]    |      ------- variant in this enum
[INFO] [stdout] 35 |     Expr(Expression),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AstNode` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parser/mod.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let mut identifier = pair.next().unwrap().as_str().to_string();
[INFO] [stdout]    |                 ----^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/ui/textarea.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |             _ => {}
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/ui/textarea.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 27 |             LetterEvent::CommandEvent(x) => {
[INFO] [stdout]    |             ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 49 |             LetterEvent::RawKeyInputEvent(key_code) => {
[INFO] [stdout]    |             --------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 56 |             _ => {}
[INFO] [stdout]    |             ^ collectively making this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `callbacks` is never read
[INFO] [stdout]   --> src/ui/textarea.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct TextArea<S, R> {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     callbacks: HashMap<KeyCode, Box<dyn FnMut(&mut Self, &mut S) -> (bool, Option<R>)>>
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `disallow_line_breaks`, `set_lines`, `on_key`, `insert_line_break_at_cursor`, `insert_line`, and `update` are never used
[INFO] [stdout]    --> src/ui/textarea.rs:62:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl<S, R> TextArea<S, R> {
[INFO] [stdout]     | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn disallow_line_breaks(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn set_lines(&mut self, lines: Vec<String>) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn on_key(&mut self, key_code: KeyCode, callback: Box<dyn FnMut(&mut Self, &mut S) -> (bool, Option<R>)>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn insert_line_break_at_cursor(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub fn insert_line(&mut self, index: usize, line: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn update(&mut self, rx: Arc<Mutex<Receiver<KeyEvent>>>, state: &mut S) -> Option<R> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key_code_to_string` is never used
[INFO] [stdout]   --> src/command/mod.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn key_code_to_string(key_code: &KeyCode) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_combo_string` is never used
[INFO] [stdout]   --> src/command/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<C: Copy> KeyCommandComposer<C> {
[INFO] [stdout]    | ----------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn get_combo_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `text` is never read
[INFO] [stdout]   --> src/store/mod.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct Note {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 65 |     pub id: Option<i64>,
[INFO] [stdout] 66 |     pub text: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/store/mod.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl Note {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 70 |     fn new(id: Option<i64>, text: String) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/store/mod.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl TaskStore {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 192 |     fn insert_task(&mut self, sort_index: i64, task: &Task) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn create_task_at(&mut self, index: i64, task: Task) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn create_task(&mut self, task: Task) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn get_or_create_note_id(&mut self, idx_sort_order: i64) -> Result<i64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn update_task_text(&mut self, idx_sort_order: i64, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn update_task_badge(&mut self, idx_sort_order: i64, badge_id: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn unset_task_badge(&mut self, idx_sort_order: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn update_note_text(&mut self, note_idx: i64, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn get_note_by_id(&self, note_id: i64) -> Option<&Note> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]  --> src/parser/mod.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LetterScriptParser` is never constructed
[INFO] [stdout]  --> src/parser/mod.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct LetterScriptParser;
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Expression` is never used
[INFO] [stdout]   --> src/parser/mod.rs:11:6
[INFO] [stdout]    |
[INFO] [stdout] 11 | enum Expression {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Statement` is never used
[INFO] [stdout]   --> src/parser/mod.rs:19:6
[INFO] [stdout]    |
[INFO] [stdout] 19 | enum Statement {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AstNode` is never used
[INFO] [stdout]   --> src/parser/mod.rs:34:6
[INFO] [stdout]    |
[INFO] [stdout] 34 | enum AstNode {
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_expression` is never used
[INFO] [stdout]   --> src/parser/mod.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn parse_expression(pair: Pair<Rule>) -> Option<Expression> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_param_list` is never used
[INFO] [stdout]   --> src/parser/mod.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn parse_param_list(pair: Pair<Rule>) -> Vec<(String, String)> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_statement` is never used
[INFO] [stdout]   --> src/parser/mod.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn parse_statement(pair: Pair<Rule>) -> Option<Statement> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]    --> src/parser/mod.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn parse(input: &str) -> std::result::Result<(), Error<Rule>> {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]    --> src/parser/mod.rs:126:4
[INFO] [stdout]     |
[INFO] [stdout] 126 | fn main() -> Result<()> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/parser/mod.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |             let mut identifier = pair.next().unwrap().as_str().to_string();
[INFO] [stdout]    |                 ----^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `callbacks` is never read
[INFO] [stdout]   --> src/ui/textarea.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct TextArea<S, R> {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     callbacks: HashMap<KeyCode, Box<dyn FnMut(&mut Self, &mut S) -> (bool, Option<R>)>>
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `disallow_line_breaks`, `set_lines`, `on_key`, `insert_line_break_at_cursor`, `insert_line`, and `update` are never used
[INFO] [stdout]    --> src/ui/textarea.rs:62:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl<S, R> TextArea<S, R> {
[INFO] [stdout]     | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn disallow_line_breaks(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn set_lines(&mut self, lines: Vec<String>) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn on_key(&mut self, key_code: KeyCode, callback: Box<dyn FnMut(&mut Self, &mut S) -> (bool, Option<R>)>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn insert_line_break_at_cursor(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub fn insert_line(&mut self, index: usize, line: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn update(&mut self, rx: Arc<Mutex<Receiver<KeyEvent>>>, state: &mut S) -> Option<R> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key_code_to_string` is never used
[INFO] [stdout]   --> src/command/mod.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn key_code_to_string(key_code: &KeyCode) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_combo_string` is never used
[INFO] [stdout]   --> src/command/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<C: Copy> KeyCommandComposer<C> {
[INFO] [stdout]    | ----------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn get_combo_string(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `text` is never read
[INFO] [stdout]   --> src/store/mod.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct Note {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 65 |     pub id: Option<i64>,
[INFO] [stdout] 66 |     pub text: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/store/mod.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl Note {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 70 |     fn new(id: Option<i64>, text: String) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/store/mod.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl TaskStore {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 192 |     fn insert_task(&mut self, sort_index: i64, task: &Task) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn create_task_at(&mut self, index: i64, task: Task) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn create_task(&mut self, task: Task) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn get_or_create_note_id(&mut self, idx_sort_order: i64) -> Result<i64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn update_task_text(&mut self, idx_sort_order: i64, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn update_task_badge(&mut self, idx_sort_order: i64, badge_id: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn unset_task_badge(&mut self, idx_sort_order: i64) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn update_note_text(&mut self, note_idx: i64, text: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn get_note_by_id(&self, note_id: i64) -> Option<&Note> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]  --> src/parser/mod.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LetterScriptParser` is never constructed
[INFO] [stdout]  --> src/parser/mod.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct LetterScriptParser;
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Expression` is never used
[INFO] [stdout]   --> src/parser/mod.rs:11:6
[INFO] [stdout]    |
[INFO] [stdout] 11 | enum Expression {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Statement` is never used
[INFO] [stdout]   --> src/parser/mod.rs:19:6
[INFO] [stdout]    |
[INFO] [stdout] 19 | enum Statement {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AstNode` is never used
[INFO] [stdout]   --> src/parser/mod.rs:34:6
[INFO] [stdout]    |
[INFO] [stdout] 34 | enum AstNode {
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_expression` is never used
[INFO] [stdout]   --> src/parser/mod.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn parse_expression(pair: Pair<Rule>) -> Option<Expression> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_param_list` is never used
[INFO] [stdout]   --> src/parser/mod.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn parse_param_list(pair: Pair<Rule>) -> Vec<(String, String)> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_statement` is never used
[INFO] [stdout]   --> src/parser/mod.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn parse_statement(pair: Pair<Rule>) -> Option<Statement> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]    --> src/parser/mod.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn parse(input: &str) -> std::result::Result<(), Error<Rule>> {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]    --> src/parser/mod.rs:126:4
[INFO] [stdout]     |
[INFO] [stdout] 126 | fn main() -> Result<()> {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.00s
[INFO] running `Command { std: "docker" "inspect" "82135cf022d59be4c38d4a811e6db1f471670404d114ba7023d5346e82b323e9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "82135cf022d59be4c38d4a811e6db1f471670404d114ba7023d5346e82b323e9", kill_on_drop: false }`
[INFO] [stdout] 82135cf022d59be4c38d4a811e6db1f471670404d114ba7023d5346e82b323e9
