[INFO] cloning repository https://github.com/ChristopherHardiman/cosmic-notebook
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ChristopherHardiman/cosmic-notebook" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChristopherHardiman%2Fcosmic-notebook", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChristopherHardiman%2Fcosmic-notebook'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f2654f5dd174c15026254093b7526b01f54876ca
[INFO] checking ChristopherHardiman/cosmic-notebook against master#f2c70877a7dbc51cd98e2d5d25209b24d4a586d5 for pr-150097
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChristopherHardiman%2Fcosmic-notebook" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ChristopherHardiman/cosmic-notebook
[INFO] finished tweaking git repo https://github.com/ChristopherHardiman/cosmic-notebook
[INFO] tweaked toml for git repo https://github.com/ChristopherHardiman/cosmic-notebook written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ChristopherHardiman/cosmic-notebook on toolchain f2c70877a7dbc51cd98e2d5d25209b24d4a586d5
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f2c70877a7dbc51cd98e2d5d25209b24d4a586d5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ChristopherHardiman/cosmic-notebook 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" "+f2c70877a7dbc51cd98e2d5d25209b24d4a586d5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/libcosmic`
[INFO] [stderr]     Updating git submodule `https://github.com/pop-os/iced.git`
[INFO] [stderr]     Updating git submodule `https://github.com/pop-os/cosmic-icons`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/jackpot51/rust-atomicwrites`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/dbus-settings-bindings`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/freedesktop-icons`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/window_clipboard.git`
[INFO] [stderr]     Updating git repository `https://github.com/wash2/accesskit`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/cosmic-text.git`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/softbuffer`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/glyphon.git`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/cosmic-protocols`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/winit.git`
[INFO] [stderr]     Updating git repository `https://github.com/pop-os/smithay-clipboard`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rust-embed-utils v8.9.0
[INFO] [stderr]   Downloaded getopts v0.2.24
[INFO] [stderr]   Downloaded grid v1.0.0
[INFO] [stderr]   Downloaded rust-embed-impl v8.9.0
[INFO] [stderr]   Downloaded endi v1.1.1
[INFO] [stderr]   Downloaded str_indices v0.4.4
[INFO] [stderr]   Downloaded objc2-io-surface v0.3.2
[INFO] [stderr]   Downloaded derive_setters v0.1.8
[INFO] [stderr]   Downloaded xdg v3.0.0
[INFO] [stderr]   Downloaded crabtime-internal v1.1.4
[INFO] [stderr]   Downloaded apply v0.3.0
[INFO] [stderr]   Downloaded ini_core v0.2.0
[INFO] [stderr]   Downloaded weezl v0.1.12
[INFO] [stderr]   Downloaded almost v0.2.0
[INFO] [stderr]   Downloaded known-folders v1.4.0
[INFO] [stderr]   Downloaded i18n-embed v0.16.0
[INFO] [stderr]   Downloaded lyon_tessellation v1.0.16
[INFO] [stderr]   Downloaded moxcms v0.7.10
[INFO] [stderr]   Downloaded zune-jpeg v0.5.5
[INFO] [stderr]   Downloaded smithay-client-toolkit v0.20.0
[INFO] [stderr]   Downloaded css-color v0.2.8
[INFO] [stderr]   Downloaded zerocopy v0.8.30
[INFO] [stderr]   Downloaded wayland-server v0.31.10
[INFO] [stderr]   Downloaded drm v0.11.1
[INFO] [stderr]   Downloaded ashpd v0.12.0
[INFO] [stderr]   Downloaded ron v0.11.0
[INFO] [stderr]   Downloaded swash v0.2.6
[INFO] [stderr]   Downloaded lyon_geom v1.0.18
[INFO] [stderr]   Downloaded image v0.25.9
[INFO] [stderr]   Downloaded notify v8.2.0
[INFO] [stderr]   Downloaded widestring v1.2.1
[INFO] [stderr]   Downloaded zerocopy-derive v0.8.30
[INFO] [stderr]   Downloaded read-fonts v0.35.0
[INFO] [stderr]   Downloaded harfrust v0.3.2
[INFO] [stderr]   Downloaded skrifa v0.37.0
[INFO] [stderr]   Downloaded cc v1.2.48
[INFO] [stderr]   Downloaded csscolorparser v0.7.2
[INFO] [stderr]   Downloaded i18n-embed-fl v0.10.0
[INFO] [stderr]   Downloaded etagere v0.2.15
[INFO] [stderr]   Downloaded rust-embed v8.9.0
[INFO] [stderr]   Downloaded ouroboros_macro v0.18.5
[INFO] [stderr]   Downloaded rangemap v1.7.0
[INFO] [stderr]   Downloaded zune-core v0.5.0
[INFO] [stderr]   Downloaded taffy v0.9.2
[INFO] [stderr]   Downloaded crabtime v1.1.4
[INFO] [stderr]   Downloaded wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]   Downloaded font-types v0.10.1
[INFO] [stderr]   Downloaded i18n-embed-impl v0.8.4
[INFO] [stderr]   Downloaded drm-sys v0.6.1
[INFO] [stderr]   Downloaded wayland-protocols-misc v0.3.9
[INFO] [stderr]   Downloaded ouroboros v0.18.5
[INFO] [stderr]   Downloaded jpeg-decoder v0.3.2
[INFO] [stderr]   Downloaded mutate_once v0.1.2
[INFO] [stderr]   Downloaded ropey v1.6.1
[INFO] [stderr]   Downloaded i18n-config v0.4.8
[INFO] [stderr]   Downloaded drm-ffi v0.7.1
[INFO] [stderr]   Downloaded linebender_resource_handle v0.1.1
[INFO] [stderr]   Downloaded calloop-wayland-source v0.4.1
[INFO] [stderr]   Downloaded lyon v1.0.16
[INFO] [stderr]   Downloaded unicode-properties v0.1.4
[INFO] [stderr]   Downloaded pxfm v0.1.26
[INFO] [stderr]   Downloaded orbclient v0.3.49
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+f2c70877a7dbc51cd98e2d5d25209b24d4a586d5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 59f86a6bd4926989a09eb8ffdd74983f0b656857b862afdf7c6fd65013b33340
[INFO] running `Command { std: "docker" "start" "-a" "59f86a6bd4926989a09eb8ffdd74983f0b656857b862afdf7c6fd65013b33340", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "59f86a6bd4926989a09eb8ffdd74983f0b656857b862afdf7c6fd65013b33340", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "59f86a6bd4926989a09eb8ffdd74983f0b656857b862afdf7c6fd65013b33340", kill_on_drop: false }`
[INFO] [stdout] 59f86a6bd4926989a09eb8ffdd74983f0b656857b862afdf7c6fd65013b33340
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+f2c70877a7dbc51cd98e2d5d25209b24d4a586d5" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 024e3a8589ff730db34256a85a33a2dd9f2a04edce312aac55f9fa344c3f60cd
[INFO] running `Command { std: "docker" "start" "-a" "024e3a8589ff730db34256a85a33a2dd9f2a04edce312aac55f9fa344c3f60cd", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling cc v1.2.48
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]    Compiling wayland-client v0.31.11
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling zerocopy v0.8.30
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking core_maths v0.1.1
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling memoffset v0.7.1
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking float-cmp v0.9.0
[INFO] [stderr]     Checking strict-num v0.1.1
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking siphasher v1.0.1
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling zvariant_utils v1.0.1
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]     Checking fastrand v1.9.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]     Checking waker-fn v1.2.0
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]     Checking futures-lite v1.13.0
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking wayland-server v0.31.10
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling zerocopy-derive v0.8.30
[INFO] [stderr]     Checking xkeysym v0.2.1
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]     Checking wayland-protocols v0.32.9
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling regex v1.12.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling async-recursion v1.1.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking immutable-chunkmap v2.1.2
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking accesskit v0.16.0 (https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc04)
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling winit v0.30.5 (https://github.com/pop-os/winit.git?tag=iced-xdg-surface-0.13-rc#8dfaba29)
[INFO] [stderr]     Checking accesskit_consumer v0.24.0 (https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc04)
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking euclid v0.22.11
[INFO] [stderr]     Checking dpi v0.1.1 (https://github.com/pop-os/winit.git?tag=iced-xdg-surface-0.13-rc#8dfaba29)
[INFO] [stderr]    Compiling zvariant_derive v3.15.2
[INFO] [stderr]    Compiling zbus_macros v3.15.2
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]     Checking roxmltree v0.20.0
[INFO] [stderr]    Compiling palette v0.7.6
[INFO] [stderr]    Compiling by_address v1.2.1
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]    Compiling palette_derive v0.7.6
[INFO] [stderr]     Checking font-types v0.10.1
[INFO] [stderr]     Checking fontconfig-parser v0.5.8
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking zvariant v3.15.2
[INFO] [stderr]     Checking fast-srgb8 v1.0.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking read-fonts v0.35.0
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]    Compiling toml_parser v1.0.4
[INFO] [stderr]     Checking glam v0.25.0
[INFO] [stderr]    Compiling toml_datetime v0.7.3
[INFO] [stderr]     Checking self_cell v1.2.1
[INFO] [stderr]     Checking unicode-script v0.5.7
[INFO] [stderr]     Checking zbus_names v2.6.1
[INFO] [stderr]     Checking clipboard_x11 v0.4.2 (https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab8)
[INFO] [stderr]    Compiling toml_edit v0.23.7
[INFO] [stderr]    Compiling unic-langid-impl v0.9.6
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking lyon_geom v1.0.18
[INFO] [stderr]     Checking unicode-bidi v0.3.18
[INFO] [stderr]     Checking zbus v3.15.2
[INFO] [stderr]     Checking unicode-ident v1.0.22
[INFO] [stderr]     Checking lyon_path v1.0.16
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]    Compiling unic-langid v0.9.6
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling naga v22.1.0
[INFO] [stderr]    Compiling zvariant_utils v3.2.1
[INFO] [stderr]     Checking pxfm v0.1.26
[INFO] [stderr]     Checking zeno v0.3.3
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]     Checking sys-locale v0.3.2
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.9
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.9
[INFO] [stderr]     Checking bit-vec v0.7.0
[INFO] [stderr]     Checking yazi v0.2.1
[INFO] [stderr]    Compiling ash v0.38.0+1.3.281
[INFO] [stderr]     Checking zune-core v0.5.0
[INFO] [stderr]     Checking bit-set v0.6.0
[INFO] [stderr]     Checking zune-jpeg v0.5.5
[INFO] [stderr]    Compiling zvariant_derive v5.8.0
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking skrifa v0.37.0
[INFO] [stderr]     Checking harfrust v0.3.2
[INFO] [stderr]     Checking fontdb v0.23.0
[INFO] [stderr]     Checking moxcms v0.7.10
[INFO] [stderr]    Compiling wgpu-hal v22.0.0
[INFO] [stderr]     Checking png v0.18.0
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking smithay-clipboard v0.8.0 (https://github.com/pop-os/smithay-clipboard?tag=pop-dnd-5#5a3007de)
[INFO] [stderr]     Checking mime v0.1.0 (https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab8)
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking dnd v0.1.0 (https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab8)
[INFO] [stderr]     Checking clipboard_wayland v0.2.2 (https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab8)
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking window_clipboard v0.4.1 (https://github.com/pop-os/window_clipboard.git?tag=pop-0.13-2#6b9faab8)
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking unicode-linebreak v0.1.5
[INFO] [stderr]     Checking linebender_resource_handle v0.1.1
[INFO] [stderr]     Checking rangemap v1.7.0
[INFO] [stderr]     Checking swash v0.2.6
[INFO] [stderr]     Checking ttf-parser v0.21.1
[INFO] [stderr]     Checking atspi-common v0.3.0
[INFO] [stderr]    Compiling drm-sys v0.6.1
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]    Compiling wgpu-core v22.1.0
[INFO] [stderr]     Checking wgpu-types v22.0.0
[INFO] [stderr]     Checking kurbo v0.11.3
[INFO] [stderr]     Checking image v0.25.9
[INFO] [stderr]    Compiling tiny-xlib v0.2.4
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]     Checking unicode-bidi-mirroring v0.2.0
[INFO] [stderr]     Checking linux-raw-sys v0.6.5
[INFO] [stderr]    Compiling drm-fourcc v2.2.0
[INFO] [stderr]     Checking cosmic-text v0.15.0 (https://github.com/pop-os/cosmic-text.git#9339446c)
[INFO] [stderr]     Checking unicode-properties v0.1.4
[INFO] [stderr]     Checking unicode-ccc v0.2.0
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]     Checking mutate_once v0.1.2
[INFO] [stderr]     Checking rustybuzz v0.14.1
[INFO] [stderr]     Checking kamadak-exif v0.5.5
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]     Checking atspi-proxies v0.3.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.9.0 (https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc04)
[INFO] [stderr]     Checking svgtypes v0.15.3
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]     Checking fontdb v0.18.0
[INFO] [stderr]    Compiling wgpu v22.1.0
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking calloop v0.14.3
[INFO] [stderr]    Compiling smithay-client-toolkit v0.20.0
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]     Checking simplecss v0.2.2
[INFO] [stderr]     Checking imagesize v0.12.0
[INFO] [stderr]     Checking data-url v0.3.2
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]     Checking ctor-lite v0.1.0
[INFO] [stderr]     Checking xmlwriter v0.1.0
[INFO] [stderr]     Checking atspi-connection v0.3.0
[INFO] [stderr]     Checking atspi v0.19.0
[INFO] [stderr]     Checking unicode-vo v0.1.0
[INFO] [stderr]    Compiling endi v1.1.1
[INFO] [stderr]     Checking pico-args v0.5.0
[INFO] [stderr]     Checking accesskit_unix v0.12.0 (https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc04)
[INFO] [stderr]     Checking usvg v0.42.0
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]    Compiling zvariant v5.8.0
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]    Compiling rust-embed-utils v8.9.0
[INFO] [stderr]     Checking drm-ffi v0.7.1
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.9
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking xkbcommon v0.8.0
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]    Compiling softbuffer v0.4.1 (https://github.com/pop-os/softbuffer?tag=cosmic-4.0#a3f77e25)
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking float_next_after v1.0.0
[INFO] [stderr]    Compiling icu_properties_data v2.1.1
[INFO] [stderr]     Checking accesskit_winit v0.22.0 (https://github.com/wash2/accesskit?tag=iced-xdg-surface-0.13-rc#c46afc04)
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling type-map v0.5.1
[INFO] [stderr]     Checking lyon_tessellation v1.0.16
[INFO] [stderr]     Checking iced_accessibility v0.1.0 (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking resvg v0.42.0
[INFO] [stderr]     Checking iced_core v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]    Compiling zbus_names v4.2.0
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking async-signal v0.2.13
[INFO] [stderr]     Checking drm v0.11.1
[INFO] [stderr]    Compiling rust-embed-impl v8.9.0
[INFO] [stderr]     Checking etagere v0.2.15
[INFO] [stderr]     Checking cosmic-protocols v0.1.0 (https://github.com/pop-os/cosmic-protocols?rev=d0e95be#d0e95be2)
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking lyon_algorithms v1.0.16
[INFO] [stderr]    Compiling basic-toml v0.1.10
[INFO] [stderr]    Compiling toml v0.5.11
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]    Compiling log v0.4.28
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]     Checking lyon v1.0.16
[INFO] [stderr]     Checking async-process v2.5.0
[INFO] [stderr]    Compiling i18n-config v0.4.8
[INFO] [stderr]    Compiling fluent-syntax v0.12.0
[INFO] [stderr]     Checking iced_futures v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]    Compiling zbus_macros v5.12.0
[INFO] [stderr]     Checking iced_graphics v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]    Compiling find-crate v0.6.3
[INFO] [stderr]     Checking cosmic-client-toolkit v0.1.0 (https://github.com/pop-os/cosmic-protocols?rev=d0e95be#d0e95be2)
[INFO] [stderr]    Compiling intl-memoizer v0.5.3
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking guillotiere v0.6.2
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]    Compiling fluent-langneg v0.13.1
[INFO] [stderr]    Compiling intl_pluralrules v7.0.2
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]     Checking kurbo v0.10.4
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling fluent-bundle v0.16.0
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling ouroboros_macro v0.18.5
[INFO] [stderr]     Checking iced_tiny_skia v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]    Compiling i18n-embed-impl v0.8.4
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking iced_runtime v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]    Compiling crabtime-internal v1.1.4
[INFO] [stderr]     Checking inotify v0.11.0
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking zbus v5.12.0
[INFO] [stderr]     Checking notify-types v2.0.0
[INFO] [stderr]     Checking xdg v3.0.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]     Checking notify v8.2.0
[INFO] [stderr]     Checking ouroboros v0.18.5
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking atomicwrites v0.4.2 (https://github.com/jackpot51/rust-atomicwrites#043ab485)
[INFO] [stderr]    Compiling fluent v0.17.0
[INFO] [stderr]    Compiling rust-embed v8.9.0
[INFO] [stderr]     Checking ron v0.11.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling cosmic-config-derive v0.1.0 (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling arc-swap v1.7.1
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]    Compiling i18n-embed v0.16.0
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking iced_winit v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking csscolorparser v0.7.2
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling derive_utils v0.15.0
[INFO] [stderr]     Checking ini_core v0.2.0
[INFO] [stderr]    Compiling pulldown-cmark v0.9.6
[INFO] [stderr]     Checking grid v1.0.0
[INFO] [stderr]     Checking almost v0.2.0
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking taffy v0.9.2
[INFO] [stderr]     Checking getopts v0.2.24
[INFO] [stderr]     Checking crabtime v1.1.4
[INFO] [stderr]     Checking cosmic-freedesktop-icons v0.4.0 (https://github.com/pop-os/freedesktop-icons#44edef96)
[INFO] [stderr]    Compiling i18n-embed-fl v0.10.0
[INFO] [stderr]    Compiling auto_enums v0.8.7
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]    Compiling derive_setters v0.1.8
[INFO] [stderr]     Checking inotify v0.9.6
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking filetime v0.2.26
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking str_indices v0.4.4
[INFO] [stderr]     Checking apply v0.3.0
[INFO] [stderr]     Checking css-color v0.2.8
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking ropey v1.6.1
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking notify v6.1.1
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking cosmic-settings-daemon v0.1.0 (https://github.com/pop-os/dbus-settings-bindings#b2337437)
[INFO] [stderr]     Checking cosmic-config v0.1.0 (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking cosmic-theme v0.1.0 (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking iced_glyphon v0.6.0 (https://github.com/pop-os/glyphon.git?tag=iced-0.14-dev#6ef9d12a)
[INFO] [stderr]     Checking iced_wgpu v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking iced_renderer v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking iced_widget v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking iced v0.14.0-dev (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking libcosmic v0.1.0 (https://github.com/pop-os/libcosmic#62f661e0)
[INFO] [stderr]     Checking cosmic-notebook v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `tempfile`
[INFO] [stdout]    --> src/file_handler/scanner.rs:361:9
[INFO] [stdout]     |
[INFO] [stdout] 361 |     use tempfile::TempDir;
[INFO] [stdout]     |         ^^^^^^^^ use of unresolved module or unlinked crate `tempfile`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `tempfile`, use `cargo add tempfile` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClipboardManager` and `clipboard`
[INFO] [stdout]   --> src/editor/mod.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use clipboard::{clipboard, copy_text, paste_text, ClipboardError, ClipboardManager};
[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 imports: `EditKind`, `EditOperation`, and `UndoManager`
[INFO] [stdout]   --> src/editor/mod.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use undo::{EditKind, EditOperation, UndoManager};
[INFO] [stdout]    |                ^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `widget::EditorWidget`
[INFO] [stdout]   --> src/editor/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use widget::EditorWidget;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Sender`
[INFO] [stdout]   --> src/file_handler/watcher.rs:11:42
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::mpsc::{channel, Receiver, Sender};
[INFO] [stdout]    |                                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::*`
[INFO] [stdout]   --> src/file_handler/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use io::*;
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scanner::*`
[INFO] [stdout]   --> src/file_handler/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use scanner::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `watcher::*`
[INFO] [stdout]   --> src/file_handler/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use watcher::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CowStr`
[INFO] [stdout]  --> src/markdown/preview.rs:7:80
[INFO] [stdout]   |
[INFO] [stdout] 7 | use pulldown_cmark::{Parser, Event, Tag, Options, CodeBlockKind, HeadingLevel, CowStr};
[INFO] [stdout]   |                                                                                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Component`
[INFO] [stdout]    --> src/markdown/image.rs:351:36
[INFO] [stdout]     |
[INFO] [stdout] 351 |     use std::path::{Path, PathBuf, Component};
[INFO] [stdout]     |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LineState`, `TokenStyle`, `TokenType`, and `Token`
[INFO] [stdout]   --> src/markdown/mod.rs:16:24
[INFO] [stdout]    |
[INFO] [stdout] 16 |     MarkdownTokenizer, Token, TokenType, TokenStyle,
[INFO] [stdout]    |                        ^^^^^  ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 17 |     SyntaxColorScheme, LineState, LineTokens,
[INFO] [stdout]    |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ListItem`, `StyledText`, `TableAlignment`, `TaskItem`, and `ViewModeExt`
[INFO] [stdout]   --> src/markdown/mod.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     ViewModeExt, PreviewRenderer, PreviewElement, StyledText,
[INFO] [stdout]    |     ^^^^^^^^^^^                                   ^^^^^^^^^^
[INFO] [stdout] 21 |     ListItem, TaskItem, TableAlignment, HtmlExporter,
[INFO] [stdout]    |     ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ImageConfig`, `ImageError`, `ImageFormat`, `ImageHandler`, and `ImageResult`
[INFO] [stdout]   --> src/markdown/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     ImageHandler, ImageConfig, ImageFormat, ImageError, ImageResult,
[INFO] [stdout]    |     ^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExportError`, `ExportFormat`, `ExportResult`, `HtmlExportOptions`, and `MarkdownExporter`
[INFO] [stdout]   --> src/markdown/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     MarkdownExporter, ExportFormat, HtmlExportOptions, ExportError, ExportResult,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchDirection`
[INFO] [stdout]   --> src/search/mod.rs:11:55
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use find::{FindOptions, FindResult, SearchEngine, SearchDirection};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `row` and `toggler`
[INFO] [stdout]  --> src/ui/find_bar.rs:7:41
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cosmic::widget::{button, container, row, text, text_input, toggler, Column, Row};
[INFO] [stdout]   |                                         ^^^                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `row`
[INFO] [stdout]  --> src/ui/status_bar.rs:7:51
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cosmic::widget::{container, horizontal_space, row, text, Row};
[INFO] [stdout]   |                                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FindBarState` and `build_find_bar`
[INFO] [stdout]   --> src/ui/mod.rs:24:20
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use find_bar::{build_find_bar, FindBarState};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sidebar::*`
[INFO] [stdout]   --> src/ui/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use sidebar::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StatusBarInfo`, `StatusBar`, and `build_status_info`
[INFO] [stdout]   --> src/ui/mod.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use status_bar::{build_status_info, StatusBar, StatusBarInfo};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TabBar`, `TabContextAction`, and `TabInfo`
[INFO] [stdout]   --> src/ui/mod.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use tab_bar::{TabBar, TabContextAction, TabInfo};
[INFO] [stdout]    |                   ^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ClipboardManager` and `clipboard`
[INFO] [stdout]   --> src/editor/mod.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use clipboard::{clipboard, copy_text, paste_text, ClipboardError, ClipboardManager};
[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 imports: `EditKind`, `EditOperation`, and `UndoManager`
[INFO] [stdout]   --> src/editor/mod.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use undo::{EditKind, EditOperation, UndoManager};
[INFO] [stdout]    |                ^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `widget::EditorWidget`
[INFO] [stdout]   --> src/editor/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use widget::EditorWidget;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Sender`
[INFO] [stdout]   --> src/file_handler/watcher.rs:11:42
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::mpsc::{channel, Receiver, Sender};
[INFO] [stdout]    |                                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::*`
[INFO] [stdout]   --> src/file_handler/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use io::*;
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scanner::*`
[INFO] [stdout]   --> src/file_handler/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use scanner::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `watcher::*`
[INFO] [stdout]   --> src/file_handler/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use watcher::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CowStr`
[INFO] [stdout]  --> src/markdown/preview.rs:7:80
[INFO] [stdout]   |
[INFO] [stdout] 7 | use pulldown_cmark::{Parser, Event, Tag, Options, CodeBlockKind, HeadingLevel, CowStr};
[INFO] [stdout]   |                                                                                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Component`
[INFO] [stdout]    --> src/markdown/image.rs:351:36
[INFO] [stdout]     |
[INFO] [stdout] 351 |     use std::path::{Path, PathBuf, Component};
[INFO] [stdout]     |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LineState`, `TokenStyle`, `TokenType`, and `Token`
[INFO] [stdout]   --> src/markdown/mod.rs:16:24
[INFO] [stdout]    |
[INFO] [stdout] 16 |     MarkdownTokenizer, Token, TokenType, TokenStyle,
[INFO] [stdout]    |                        ^^^^^  ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 17 |     SyntaxColorScheme, LineState, LineTokens,
[INFO] [stdout]    |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ListItem`, `StyledText`, `TableAlignment`, `TaskItem`, and `ViewModeExt`
[INFO] [stdout]   --> src/markdown/mod.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     ViewModeExt, PreviewRenderer, PreviewElement, StyledText,
[INFO] [stdout]    |     ^^^^^^^^^^^                                   ^^^^^^^^^^
[INFO] [stdout] 21 |     ListItem, TaskItem, TableAlignment, HtmlExporter,
[INFO] [stdout]    |     ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ImageConfig`, `ImageError`, `ImageFormat`, `ImageHandler`, and `ImageResult`
[INFO] [stdout]   --> src/markdown/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     ImageHandler, ImageConfig, ImageFormat, ImageError, ImageResult,
[INFO] [stdout]    |     ^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ExportError`, `ExportFormat`, `ExportResult`, `HtmlExportOptions`, and `MarkdownExporter`
[INFO] [stdout]   --> src/markdown/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     MarkdownExporter, ExportFormat, HtmlExportOptions, ExportError, ExportResult,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchDirection`
[INFO] [stdout]   --> src/search/mod.rs:11:55
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use find::{FindOptions, FindResult, SearchEngine, SearchDirection};
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `row` and `toggler`
[INFO] [stdout]  --> src/ui/find_bar.rs:7:41
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cosmic::widget::{button, container, row, text, text_input, toggler, Column, Row};
[INFO] [stdout]   |                                         ^^^                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `row`
[INFO] [stdout]  --> src/ui/status_bar.rs:7:51
[INFO] [stdout]   |
[INFO] [stdout] 7 | use cosmic::widget::{container, horizontal_space, row, text, Row};
[INFO] [stdout]   |                                                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FindBarState` and `build_find_bar`
[INFO] [stdout]   --> src/ui/mod.rs:24:20
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use find_bar::{build_find_bar, FindBarState};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sidebar::*`
[INFO] [stdout]   --> src/ui/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use sidebar::*;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StatusBarInfo`, `StatusBar`, and `build_status_info`
[INFO] [stdout]   --> src/ui/mod.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use status_bar::{build_status_info, StatusBar, StatusBarInfo};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TabBar`, `TabContextAction`, and `TabInfo`
[INFO] [stdout]   --> src/ui/mod.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use tab_bar::{TabBar, TabContextAction, TabInfo};
[INFO] [stdout]    |                   ^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/file_handler/watcher.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |         let mode = if self.config.recursive {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_col_to_char` is never used
[INFO] [stdout]   --> src/app.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn line_col_to_char(rope: &ropey::Rope, line: usize, col: usize) -> Option<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `view_main` is never used
[INFO] [stdout]    --> src/app.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 280 | impl CosmicNotebook {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 299 |     fn view_main(&self) -> Element<'_, Message> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_WINDOW_WIDTH` is never used
[INFO] [stdout]   --> src/config.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const MIN_WINDOW_WIDTH: u32 = 400;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_WINDOW_HEIGHT` is never used
[INFO] [stdout]   --> src/config.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const MIN_WINDOW_HEIGHT: u32 = 300;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WARNING_FILE_SIZE` is never used
[INFO] [stdout]   --> src/config.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const WARNING_FILE_SIZE: u64 = 1024 * 1024;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `save`, `config_dir`, `data_dir`, `cache_dir`, `recovery_dir`, and `backup_dir` are never used
[INFO] [stdout]    --> src/config.rs:76:12
[INFO] [stdout]     |
[INFO] [stdout]  67 | impl Config {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn save(&self) -> ConfigResult<()> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn config_dir() -> ConfigResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn data_dir() -> ConfigResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn cache_dir() -> ConfigResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn recovery_dir() -> ConfigResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn backup_dir() -> ConfigResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AppError` is never used
[INFO] [stdout]   --> src/error.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum AppError {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileError` is never used
[INFO] [stdout]   --> src/error.rs:39:10
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum FileError {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LoadError`, `SaveError`, `ParseError`, `MissingValue`, `InvalidValue`, and `DirectoryError` are never constructed
[INFO] [stdout]    --> src/error.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub enum ConfigError {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 150 |     LoadError(String),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     SaveError(String),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     ParseError(String),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     MissingValue { key: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     InvalidValue { key: String, reason: String },
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     DirectoryError,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConfigError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EditorError` is never used
[INFO] [stdout]    --> src/error.rs:175:10
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub enum EditorError {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ClipboardError` is never used
[INFO] [stdout]    --> src/error.rs:203:10
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub enum ClipboardError {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WatcherError` is never used
[INFO] [stdout]    --> src/error.rs:227:10
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub enum WatcherError {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AppResult` is never used
[INFO] [stdout]    --> src/error.rs:250:10
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub type AppResult<T> = Result<T, AppError>;
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FileResult` is never used
[INFO] [stdout]    --> src/error.rs:253:10
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub type FileResult<T> = Result<T, FileError>;
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `EditorResult` is never used
[INFO] [stdout]    --> src/error.rs:259:10
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub type EditorResult<T> = Result<T, EditorError>;
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `user_message` is never used
[INFO] [stdout]    --> src/error.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 261 | impl FileError {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 262 |     /// Create a user-friendly error message suitable for display in dialogs
[INFO] [stdout] 263 |     pub fn user_message(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `user_message` is never used
[INFO] [stdout]    --> src/error.rs:299:12
[INFO] [stdout]     |
[INFO] [stdout] 297 | impl ClipboardError {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] 298 |     /// Create a user-friendly error message
[INFO] [stdout] 299 |     pub fn user_message(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/message.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |     Surface(cosmic::surface::Action),
[INFO] [stdout]    |     ------- ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Message` has derived impls for the traits `Clone` and `Debug`, but these are 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] 41 -     Surface(cosmic::surface::Action),
[INFO] [stdout] 41 +     Surface(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `None` is never constructed
[INFO] [stdout]   --> src/message.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum Message {
[INFO] [stdout]    |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 44 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Message` 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: variants `SaveToPath`, `Reload`, `ExternalChange`, `OpenRecent`, `ClearRecent`, and `RevealInFileManager` are never constructed
[INFO] [stdout]    --> src/message.rs:78:5
[INFO] [stdout]     |
[INFO] [stdout]  49 | pub enum FileMessage {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  78 |     SaveToPath {
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     Reload(DocumentId),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     ExternalChange {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     OpenRecent(PathBuf),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     ClearRecent,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     RevealInFileManager(PathBuf),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FileMessage` 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: variants `Modified`, `Deleted`, and `Renamed` are never constructed
[INFO] [stdout]    --> src/message.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub enum ExternalChangeKind {
[INFO] [stdout]     |          ------------------ variants in this enum
[INFO] [stdout] 129 |     Modified,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 130 |     Deleted,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 131 |     Renamed(PathBuf),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExternalChangeKind` 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: multiple variants are never constructed
[INFO] [stdout]    --> src/message.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub enum TabMessage {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 137 |     /// Select a tab by document ID
[INFO] [stdout] 138 |     Select(DocumentId),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     SelectIndex(usize),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     Next,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     Previous,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     Close(DocumentId),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     CloseCurrent,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     CloseAll,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     CloseOthers(DocumentId),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     CloseToRight(DocumentId),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     StartDrag(usize),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     DragOver(usize),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     EndDrag,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     CancelDrag,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     TogglePin(DocumentId),
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TabMessage` 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: multiple variants are never constructed
[INFO] [stdout]    --> src/message.rs:184:5
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub enum EditorMessage {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] 183 |     /// Text content changed
[INFO] [stdout] 184 |     TextChanged {
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     Insert {
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     Delete {
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     CursorMoved {
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     SelectionChanged {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     GoToLine(usize),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     Indent,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     Outdent,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     ToggleComment,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     DuplicateLine,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     MoveLineUp,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     MoveLineDown,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     DeleteLine,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     InsertLineBelow,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     InsertLineAbove,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     Format,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     ScrollTo {
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EditorMessage` 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: variants `Content` and `Error` are never constructed
[INFO] [stdout]    --> src/message.rs:285:5
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub enum ClipboardMessage {
[INFO] [stdout]     |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 285 |     Content(String),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     Error(String),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ClipboardMessage` 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: variants `GlobalSearch`, `GlobalSearchResults`, `GoToResult`, and `ClearResults` are never constructed
[INFO] [stdout]    --> src/message.rs:331:5
[INFO] [stdout]     |
[INFO] [stdout] 293 | pub enum SearchMessage {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 331 |     GlobalSearch(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     GlobalSearchResults(Vec<GlobalSearchResult>),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     GoToResult(GlobalSearchResult),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     ClearResults,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SearchMessage` 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: fields `path`, `line`, `column`, `match_text`, and `context` are never read
[INFO] [stdout]    --> src/message.rs:346:9
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub struct GlobalSearchResult {
[INFO] [stdout]     |            ------------------ fields in this struct
[INFO] [stdout] 346 |     pub path: PathBuf,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 347 |     pub line: usize,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 348 |     pub column: usize,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 349 |     pub match_text: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 350 |     pub context: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GlobalSearchResult` 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: multiple variants are never constructed
[INFO] [stdout]    --> src/message.rs:360:5
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub enum ViewMessage {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 360 |     SetSidebarWidth(u32),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     SetViewMode(crate::config::ViewMode),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |     ToggleLineNumbers,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     ToggleWordWrap,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     ToggleStatusBar,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     FocusEditor,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     FocusSidebar,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ViewMessage` 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: multiple variants are never constructed
[INFO] [stdout]    --> src/message.rs:403:5
[INFO] [stdout]     |
[INFO] [stdout] 398 | pub enum DialogMessage {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 403 |     CloseCommandPalette,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     CommandPaletteInput(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     ExecuteCommand(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 412 |     ShowConfirm {
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     ConfirmResult(bool),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 422 |     ShowError {
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     CloseDialog,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     ShowSettings,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DialogMessage` 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: multiple variants are never constructed
[INFO] [stdout]    --> src/message.rs:441:5
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub enum SystemMessage {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] 440 |     /// Window resize event
[INFO] [stdout] 441 |     WindowResized {
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     WindowFocused(bool),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     ForceQuit,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 459 |     ThemeChanged,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 462 |     Tick,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     Shortcut(String),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     FilesDropped(Vec<PathBuf>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     Error(String),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     ClearStatus,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SystemMessage` 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: variants `DirectoryScanComplete`, `DirectoryScanError`, `RecoverySave`, `RecoveryFilesFound`, and `ConfigChanged` are never constructed
[INFO] [stdout]    --> src/message.rs:481:5
[INFO] [stdout]     |
[INFO] [stdout] 479 | pub enum InternalMessage {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 480 |     /// Directory scan completed
[INFO] [stdout] 481 |     DirectoryScanComplete(Vec<FileEntry>),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 484 |     DirectoryScanError(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 490 |     RecoverySave,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     RecoveryFilesFound(Vec<PathBuf>),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 496 |     ConfigChanged,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `InternalMessage` 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: enum `SidebarMessage` is never used
[INFO] [stdout]    --> src/message.rs:501:10
[INFO] [stdout]     |
[INFO] [stdout] 501 | pub enum SidebarMessage {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_uuid` is never used
[INFO] [stdout]   --> src/state/app_state.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl DocumentId {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn as_uuid(&self) -> &Uuid {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `read_only`, `last_disk_mtime`, and `encoding` are never read
[INFO] [stdout]   --> src/state/app_state.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct Document {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub read_only: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub last_disk_mtime: Option<std::time::SystemTime>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub encoding: DocumentEncoding,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Document` 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: methods `full_title` and `has_file` are never used
[INFO] [stdout]    --> src/state/app_state.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl Document {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn full_title(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn has_file(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Utf8Bom`, `Utf16Le`, and `Utf16Be` are never constructed
[INFO] [stdout]    --> src/state/app_state.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub enum DocumentEncoding {
[INFO] [stdout]     |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 167 |     Utf8Bom,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 168 |     Utf16Le,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 169 |     Utf16Be,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DocumentEncoding` 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: method `display_name` is never used
[INFO] [stdout]    --> src/state/app_state.rs:174:12
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl DocumentEncoding {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 173 |     /// Get display name for the encoding
[INFO] [stdout] 174 |     pub fn display_name(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `global_search_results` and `global_search_in_progress` are never read
[INFO] [stdout]    --> src/state/app_state.rs:236:9
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub struct AppState {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub global_search_results: Vec<SearchResult>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub global_search_in_progress: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AppState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `document_count` and `has_documents` are never used
[INFO] [stdout]    --> src/state/app_state.rs:345:12
[INFO] [stdout]     |
[INFO] [stdout] 242 | impl AppState {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn document_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn has_documents(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `text`, `level`, and `timestamp` are never read
[INFO] [stdout]    --> src/state/app_state.rs:398:9
[INFO] [stdout]     |
[INFO] [stdout] 396 | pub struct StatusMessage {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 397 |     /// Message text
[INFO] [stdout] 398 |     pub text: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 401 |     pub level: StatusLevel,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub timestamp: std::time::Instant,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `StatusMessage` 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: variant `Warning` is never constructed
[INFO] [stdout]    --> src/state/app_state.rs:411:5
[INFO] [stdout]     |
[INFO] [stdout] 409 | pub enum StatusLevel {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] 410 |     Info,
[INFO] [stdout] 411 |     Warning,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `StatusLevel` 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: fields `path`, `line`, `column`, `match_text`, and `context` are never read
[INFO] [stdout]    --> src/state/app_state.rs:419:9
[INFO] [stdout]     |
[INFO] [stdout] 417 | pub struct SearchResult {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 418 |     /// File path
[INFO] [stdout] 419 |     pub path: PathBuf,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 422 |     pub line: usize,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub column: usize,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub match_text: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub context: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SearchResult` 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: associated function `start` is never used
[INFO] [stdout]   --> src/state/editor_state.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl CursorPosition {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn start() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_collapsed`, `normalized`, `start_position`, `end_position`, and `contains` are never used
[INFO] [stdout]   --> src/state/editor_state.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl Selection {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 58 |     /// Create a new selection
[INFO] [stdout] 59 |     pub fn new(start: CursorPosition, end: CursorPosition) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn is_collapsed(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn normalized(&self) -> (CursorPosition, CursorPosition) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn start_position(&self) -> CursorPosition {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn end_position(&self) -> CursorPosition {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn contains(&self, pos: CursorPosition) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kind`, `position`, `text`, `selection_before`, `cursor_after`, and `timestamp` are never read
[INFO] [stdout]    --> src/state/editor_state.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub struct EditOperation {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 126 |     /// Type of edit
[INFO] [stdout] 127 |     pub kind: EditKind,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub position: CursorPosition,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub text: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub selection_before: Selection,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub cursor_after: CursorPosition,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub timestamp: std::time::Instant,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EditOperation` 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: associated items `insert`, `delete`, `replace`, and `can_merge_with` are never used
[INFO] [stdout]    --> src/state/editor_state.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | impl EditOperation {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 146 |     /// Create a new insert operation
[INFO] [stdout] 147 |     pub fn insert(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn delete(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn replace(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn can_merge_with(&self, other: &EditOperation) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Insert`, `Delete`, and `Replace` are never constructed
[INFO] [stdout]    --> src/state/editor_state.rs:234:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub enum EditKind {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 233 |     /// Text was inserted
[INFO] [stdout] 234 |     Insert,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 235 |     /// Text was deleted
[INFO] [stdout] 236 |     Delete,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 237 |     /// Text was replaced
[INFO] [stdout] 238 |     Replace { old_text: String, new_text: String },
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EditKind` 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: fields `scroll_line`, `scroll_column`, `undo_stack`, `redo_stack`, `max_undo_history`, and `has_focus` are never read
[INFO] [stdout]    --> src/state/editor_state.rs:251:9
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub struct EditorState {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub scroll_line: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub scroll_column: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub undo_stack: Vec<EditOperation>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     pub redo_stack: Vec<EditOperation>,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub max_undo_history: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub has_focus: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EditorState` 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: multiple methods are never used
[INFO] [stdout]    --> src/state/editor_state.rs:305:12
[INFO] [stdout]     |
[INFO] [stdout] 279 | impl EditorState {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn extend_selection_to(&mut self, position: CursorPosition) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn set_selection(&mut self, selection: Selection) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn select_all(&mut self, end_position: CursorPosition) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn push_undo(&mut self, operation: EditOperation) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn pop_undo(&mut self) -> Option<EditOperation> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn pop_redo(&mut self) -> Option<EditOperation> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 376 |     pub fn clear_history(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn find_result_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 429 |     pub fn current_find_number(&self) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `remove_recent_file`, `clear_recent_files`, `existing_recent_files`, and `update_open_files` are never used
[INFO] [stdout]    --> src/state/session_state.rs:67:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl SessionState {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  66 |     /// Create a new session state
[INFO] [stdout]  67 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn remove_recent_file(&mut self, path: &PathBuf) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn clear_recent_files(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn existing_recent_files(&self) -> Vec<&RecentFile> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn update_open_files(&mut self, files: Vec<PathBuf>, active_index: Option<usize>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `display_name` and `relative_time` are never used
[INFO] [stdout]    --> src/state/session_state.rs:185:12
[INFO] [stdout]     |
[INFO] [stdout] 183 | impl RecentFile {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 184 |     /// Get display name (filename)
[INFO] [stdout] 185 |     pub fn display_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn relative_time(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecoveryFile` is never constructed
[INFO] [stdout]    --> src/state/session_state.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub struct RecoveryFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `exists`, `age`, and `is_stale` are never used
[INFO] [stdout]    --> src/state/session_state.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 257 | impl RecoveryFile {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 258 |     /// Create a new recovery file entry
[INFO] [stdout] 259 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn age(&self) -> chrono::Duration {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn is_stale(&self, max_age_days: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `extension`, `is_markdown`, `is_hidden`, and `display_size` are never used
[INFO] [stdout]   --> src/state/sidebar_state.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl FileEntry {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 37 |     /// Create a new file entry
[INFO] [stdout] 38 |     pub fn new(path: PathBuf, depth: usize, parent_index: Option<usize>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn extension(&self) -> Option<&str> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn is_markdown(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn is_hidden(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn display_size(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selected_path`, `focused_index`, `has_focus`, and `context_menu` are never read
[INFO] [stdout]    --> src/state/sidebar_state.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub struct SidebarState {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub selected_path: Option<PathBuf>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub focused_index: Option<usize>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub has_focus: bool,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub context_menu: Option<ContextMenuState>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SidebarState` 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: multiple methods are never used
[INFO] [stdout]    --> src/state/sidebar_state.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl SidebarState {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn is_expanded(&self, path: &PathBuf) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn toggle_folder(&mut self, path: &PathBuf) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn expand_folder(&mut self, path: &PathBuf) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn collapse_folder(&mut self, path: &PathBuf) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn set_selected(&mut self, path: Option<PathBuf>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn set_filter(&mut self, text: String) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn visible_entries(&self) -> Vec<(usize, &FileEntry)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn get_entry(&self, index: usize) -> Option<&FileEntry> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn entry_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn focus_up(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |     pub fn focus_down(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn focused_entry(&self) -> Option<&FileEntry> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub fn toggle(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn clear_error(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn show_context_menu(&mut self, entry_index: usize, x: f32, y: f32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn hide_context_menu(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entry_index`, `x`, and `y` are never read
[INFO] [stdout]    --> src/state/sidebar_state.rs:370:9
[INFO] [stdout]     |
[INFO] [stdout] 368 | pub struct ContextMenuState {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 369 |     /// Index of entry the menu is for
[INFO] [stdout] 370 |     pub entry_index: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub x: f32,
[INFO] [stdout]     |         ^
[INFO] [stdout] ...
[INFO] [stdout] 376 |     pub y: f32,
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ContextMenuState` 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: fields `dragging_index`, `drop_target_index`, `context_menu_open`, and `context_menu_index` are never read
[INFO] [stdout]   --> src/state/tab_state.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct TabState {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub dragging_index: Option<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub drop_target_index: Option<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub context_menu_open: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub context_menu_index: Option<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TabState` 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: multiple methods are never used
[INFO] [stdout]    --> src/state/tab_state.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl TabState {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn active_tab_ref(&self) -> Option<&Tab> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn move_tab(&mut self, from: usize, to: usize) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn toggle_pin(&mut self, document_id: DocumentId) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn start_drag(&mut self, index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn update_drop_target(&mut self, index: Option<usize>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn end_drag(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn cancel_drag(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn close_others(&mut self, keep_document_id: DocumentId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn close_to_right(&mut self, document_id: DocumentId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     pub fn iter(&self) -> impl Iterator<Item = &Tab> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn document_ids(&self) -> Vec<DocumentId> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Editor` is never constructed
[INFO] [stdout]   --> src/editor/mod.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Editor {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/editor/mod.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  41 | impl Editor {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  42 |     /// Create a new empty editor
[INFO] [stdout]  43 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn with_content(content: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn buffer(&self) -> &TextBuffer {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn buffer_mut(&mut self) -> &mut TextBuffer {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn state(&self) -> &EditorState {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn state_mut(&mut self) -> &mut EditorState {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn cursor(&self) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn set_cursor(&mut self, pos: CursorPosition) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn selection(&self) -> Option<&Selection> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn has_selection(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn set_selection(&mut self, selection: Selection) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn scroll_line(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn set_viewport_lines(&mut self, lines: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     fn update_scroll(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn is_modified(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn mark_saved(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn content(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn set_content(&mut self, content: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn move_left(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn move_right(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn move_up(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn move_down(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn move_home(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn move_end(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn move_word_left(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn move_word_right(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn page_up(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn page_down(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn move_document_start(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 288 |     pub fn move_document_end(&mut self, extend_selection: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn go_to_line(&mut self, line_number: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     fn update_selection_start(&mut self, extend: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn update_selection_end(&mut self, extend: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn clear_selection(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn select_all(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn insert_char(&mut self, ch: char) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn insert_text(&mut self, text: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn backspace(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn delete(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 446 |     fn delete_selection(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn selected_text(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |     pub fn delete_word_left(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 510 |     pub fn delete_word_right(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 531 |     pub fn line_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 536 |     pub fn char_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 541 |     pub fn get_line(&self, line_idx: usize) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LineEnding` is never used
[INFO] [stdout]   --> src/editor/buffer.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum LineEnding {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `as_str`, `display_name`, and `detect` are never used
[INFO] [stdout]   --> src/editor/buffer.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl LineEnding {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 20 |     /// Get the string representation of the line ending
[INFO] [stdout] 21 |     pub fn as_str(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn display_name(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn detect(text: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextBuffer` is never constructed
[INFO] [stdout]   --> src/editor/buffer.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct TextBuffer {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/editor/buffer.rs:67:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl TextBuffer {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  66 |     /// Create an empty text buffer
[INFO] [stdout]  67 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn from_str(text: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn rope(&self) -> &Rope {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn rope_mut(&mut self) -> &mut Rope {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn version(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn line_ending(&self) -> LineEnding {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn set_line_ending(&mut self, ending: LineEnding) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn is_modified(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn mark_saved(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn len_chars(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn len_bytes(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn len_lines(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn line(&self, line_idx: usize) -> Option<String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn line_without_newline(&self, line_idx: usize) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn line_len(&self, line_idx: usize) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn line_col_to_char(&self, line: usize, col: usize) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn char_to_line_col(&self, char_idx: usize) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn insert(&mut self, char_idx: usize, text: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn insert_str(&mut self, char_idx: usize, text: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn insert_at(&mut self, line: usize, col: usize, text: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn insert_char(&mut self, char_idx: usize, ch: char) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn delete(&mut self, range: Range<usize>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn delete_range(&mut self, start_char: usize, end_char: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn delete_by_line_col(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn replace(&mut self, range: Range<usize>, text: &str) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     pub fn slice_range(&self, range: Range<usize>) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn slice(&self, start_char: usize, end_char: usize) -> String {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn to_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn to_string_with_ending(&self, ending: LineEnding) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn set_content(&mut self, text: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 298 |     pub fn char_at(&self, char_idx: usize) -> Option<char> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     pub fn word_at(&self, char_idx: usize) -> Option<(usize, usize)> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn next_word_boundary(&self, char_idx: usize) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn prev_word_boundary(&self, char_idx: usize) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn word_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NotText` is never constructed
[INFO] [stdout]   --> src/editor/clipboard.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum ClipboardError {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |     NotText,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClipboardError` 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: methods `has_text` and `clear` are never used
[INFO] [stdout]    --> src/editor/clipboard.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl ClipboardManager {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn has_text(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn clear(&self) -> Result<(), ClipboardError> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CursorController` is never constructed
[INFO] [stdout]  --> src/editor/cursor.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct CursorController;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/editor/cursor.rs:13:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl CursorController {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout]  12 |     /// Move cursor left by one character
[INFO] [stdout]  13 |     pub fn move_left(buffer: &TextBuffer, pos: CursorPosition) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn move_right(buffer: &TextBuffer, pos: CursorPosition) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn move_up(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn move_down(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn move_home(buffer: &TextBuffer, pos: CursorPosition) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn move_end(buffer: &TextBuffer, pos: CursorPosition) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn move_word_left(buffer: &TextBuffer, pos: CursorPosition) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn move_word_right(buffer: &TextBuffer, pos: CursorPosition) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn move_page_up(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn move_page_down(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn move_document_start() -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn move_document_end(buffer: &TextBuffer) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn go_to_line(buffer: &TextBuffer, line_number: usize) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn clamp(buffer: &TextBuffer, pos: CursorPosition) -> CursorPosition {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_scroll` is never used
[INFO] [stdout]    --> src/editor/cursor.rs:182:8
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub fn calculate_scroll(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GROUP_TIMEOUT` is never used
[INFO] [stdout]   --> src/editor/undo.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const GROUP_TIMEOUT: Duration = Duration::from_millis(500);
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EditKind` is never used
[INFO] [stdout]   --> src/editor/undo.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum EditKind {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditOperation` is never constructed
[INFO] [stdout]   --> src/editor/undo.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct EditOperation {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `insert`, `delete`, `replace`, `can_merge_with`, and `merge` are never used
[INFO] [stdout]    --> src/editor/undo.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl EditOperation {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  48 |     /// Create a new insert operation
[INFO] [stdout]  49 |     pub fn insert(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn delete(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn replace(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn can_merge_with(&self, other: &EditOperation) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn merge(&mut self, other: EditOperation) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UndoManager` is never constructed
[INFO] [stdout]    --> src/editor/undo.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub struct UndoManager {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/editor/undo.rs:203:12
[INFO] [stdout]     |
[INFO] [stdout] 201 | impl UndoManager {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 202 |     /// Create a new undo manager with specified max history
[INFO] [stdout] 203 |     pub fn new(max_history: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn with_default_history() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn push(&mut self, operation: EditOperation) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn undo(&mut self) -> Option<EditOperation> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn redo(&mut self) -> Option<EditOperation> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn mark_saved(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn is_at_saved_state(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     pub fn undo_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn redo_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     pub fn memory_usage(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorWidgetConfig` is never constructed
[INFO] [stdout]   --> src/editor/widget.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct EditorWidgetConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorWidget` is never constructed
[INFO] [stdout]   --> src/editor/widget.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct EditorWidget;
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `view`, `render_line`, `cursor_indicator`, and `screen_to_position` are never used
[INFO] [stdout]    --> src/editor/widget.rs:49:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl EditorWidget {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout]  48 |     /// Create an editor view element
[INFO] [stdout]  49 |     pub fn view<'a>(
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     fn render_line<'a>(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn cursor_indicator<'a>(cursor: CursorPosition) -> Element<'a, Message> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn screen_to_position(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorViewport` is never constructed
[INFO] [stdout]    --> src/editor/widget.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub struct EditorViewport {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `set_size` are never used
[INFO] [stdout]    --> src/editor/widget.rs:190:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl EditorViewport {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 189 |     /// Create a new viewport with dimensions
[INFO] [stdout] 190 |     pub fn new(width: f32, height: f32, line_height: f32, char_width: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn set_size(&mut self, width: f32, height: f32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_FILE_SIZE` is never used
[INFO] [stdout]   --> src/file_handler/io.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const MAX_FILE_SIZE: u64 = 10 * 1024 * 1024;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WARNING_FILE_SIZE` is never used
[INFO] [stdout]   --> src/file_handler/io.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const WARNING_FILE_SIZE: u64 = 1024 * 1024;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileEncoding` is never used
[INFO] [stdout]   --> src/file_handler/io.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum FileEncoding {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileReadResult` is never constructed
[INFO] [stdout]   --> src/file_handler/io.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct FileReadResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileInfo` is never constructed
[INFO] [stdout]   --> src/file_handler/io.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct FileInfo {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_path`, `is_too_large`, `should_warn_size`, and `modified_ago` are never used
[INFO] [stdout]    --> src/file_handler/io.rs:72:12
[INFO] [stdout]     |
[INFO] [stdout]  70 | impl FileInfo {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  71 |     /// Get file info for a path
[INFO] [stdout]  72 |     pub fn from_path(path: impl AsRef<Path>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn is_too_large(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn should_warn_size(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn modified_ago(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_encoding` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:133:4
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn detect_encoding(bytes: &[u8]) -> FileEncoding {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_content` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn decode_content(bytes: &[u8], encoding: FileEncoding) -> (String, bool) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_utf16_le` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:190:4
[INFO] [stdout]     |
[INFO] [stdout] 190 | fn decode_utf16_le(bytes: &[u8]) -> (String, bool) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_utf16_be` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:209:4
[INFO] [stdout]     |
[INFO] [stdout] 209 | fn decode_utf16_be(bytes: &[u8]) -> (String, bool) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:228:14
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub async fn read_file(path: impl AsRef<Path>) -> FileResult<FileReadResult> {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_sync` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:271:8
[INFO] [stdout]     |
[INFO] [stdout] 271 | pub fn read_file_sync(path: impl AsRef<Path>) -> FileResult<FileReadResult> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_file_atomic` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:317:14
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub async fn write_file_atomic(path: impl AsRef<Path>, content: &str) -> FileResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_file_atomic_sync` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:367:8
[INFO] [stdout]     |
[INFO] [stdout] 367 | pub fn write_file_atomic_sync(path: impl AsRef<Path>, content: &str) -> FileResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_file` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:417:14
[INFO] [stdout]     |
[INFO] [stdout] 417 | pub async fn write_file(path: impl AsRef<Path>, content: &str) -> FileResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_exists` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:428:8
[INFO] [stdout]     |
[INFO] [stdout] 428 | pub fn file_exists(path: impl AsRef<Path>) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_exists` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:434:8
[INFO] [stdout]     |
[INFO] [stdout] 434 | pub fn dir_exists(path: impl AsRef<Path>) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_size` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:440:8
[INFO] [stdout]     |
[INFO] [stdout] 440 | pub fn file_size(path: impl AsRef<Path>) -> Option<u64> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_parent_dir` is never used
[INFO] [stdout]    --> src/file_handler/io.rs:445:14
[INFO] [stdout]     |
[INFO] [stdout] 445 | pub async fn ensure_parent_dir(path: impl AsRef<Path>) -> FileResult<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScanConfig` is never constructed
[INFO] [stdout]   --> src/file_handler/scanner.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ScanConfig {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `all_files`, `markdown_only`, `with_hidden`, `with_max_depth`, `with_extension`, and `with_ignored_dir` are never used
[INFO] [stdout]    --> src/file_handler/scanner.rs:69:12
[INFO] [stdout]     |
[INFO] [stdout]  67 | impl ScanConfig {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  68 |     /// Create a config that shows all files
[INFO] [stdout]  69 |     pub fn all_files() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn markdown_only() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn with_hidden(mut self, show: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn with_max_depth(mut self, depth: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn with_extension(mut self, ext: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn with_ignored_dir(mut self, dir: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScanResult` is never constructed
[INFO] [stdout]    --> src/file_handler/scanner.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct ScanResult {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scan_directory` is never used
[INFO] [stdout]    --> src/file_handler/scanner.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn scan_directory(root: impl AsRef<Path>, config: &ScanConfig) -> ScanResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scan_directory_async` is never used
[INFO] [stdout]    --> src/file_handler/scanner.rs:234:14
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub async fn scan_directory_async(root: PathBuf, config: ScanConfig) -> ScanResult {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `should_include_dir` is never used
[INFO] [stdout]    --> src/file_handler/scanner.rs:248:4
[INFO] [stdout]     |
[INFO] [stdout] 248 | fn should_include_dir(entry: &DirEntry, config: &ScanConfig) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_hidden` is never used
[INFO] [stdout]    --> src/file_handler/scanner.rs:265:4
[INFO] [stdout]     |
[INFO] [stdout] 265 | fn is_hidden(entry: &DirEntry) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scan_children` is never used
[INFO] [stdout]    --> src/file_handler/scanner.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub fn scan_children(parent: impl AsRef<Path>, config: &ScanConfig) -> Vec<FileEntry> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_markdown_files` is never used
[INFO] [stdout]    --> src/file_handler/scanner.rs:340:8
[INFO] [stdout]     |
[INFO] [stdout] 340 | pub fn count_markdown_files(root: impl AsRef<Path>) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WatchEvent` is never used
[INFO] [stdout]   --> src/file_handler/watcher.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum WatchEvent {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WatcherConfig` is never constructed
[INFO] [stdout]   --> src/file_handler/watcher.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct WatcherConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `watch_all` is never used
[INFO] [stdout]   --> src/file_handler/watcher.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl WatcherConfig {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 71 |     /// Watch all file types
[INFO] [stdout] 72 |     pub fn watch_all() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileWatcher` is never constructed
[INFO] [stdout]   --> src/file_handler/watcher.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct FileWatcher {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/file_handler/watcher.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl FileWatcher {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 102 |     /// Create a new file watcher
[INFO] [stdout] 103 |     pub fn new(config: WatcherConfig) -> Result<Self, notify::Error> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn watch(&mut self, path: impl AsRef<Path>) -> Result<(), notify::Error> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn unwatch(&mut self, path: impl AsRef<Path>) -> Result<(), notify::Error> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn poll(&mut self) -> Vec<WatchEvent> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn convert_event(&self, event: Event) -> Option<WatchEvent> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     fn should_watch_path(&self, path: &Path) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn deduplicate_events(&self) -> Vec<WatchEvent> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn watched_paths(&self) -> &HashSet<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn is_watching(&self, path: impl AsRef<Path>) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventDebouncer` is never constructed
[INFO] [stdout]    --> src/file_handler/watcher.rs:287:12
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub struct EventDebouncer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `get_ready`, `has_pending`, and `clear` are never used
[INFO] [stdout]    --> src/file_handler/watcher.rs:297:12
[INFO] [stdout]     |
[INFO] [stdout] 295 | impl EventDebouncer {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 296 |     /// Create a new debouncer
[INFO] [stdout] 297 |     pub fn new(debounce_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn add(&mut self, event: WatchEvent) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn get_ready(&mut self) -> Vec<WatchEvent> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn has_pending(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileConflict` is never constructed
[INFO] [stdout]    --> src/file_handler/watcher.rs:347:12
[INFO] [stdout]     |
[INFO] [stdout] 347 | pub struct FileConflict {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConflictType` is never used
[INFO] [stdout]    --> src/file_handler/watcher.rs:360:10
[INFO] [stdout]     |
[INFO] [stdout] 360 | pub enum ConflictType {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConflictResolution` is never used
[INFO] [stdout]    --> src/file_handler/watcher.rs:373:10
[INFO] [stdout]     |
[INFO] [stdout] 373 | pub enum ConflictResolution {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_recovery_files`, `recoverable_entries`, and `remove_stale_entries` are never used
[INFO] [stdout]    --> src/file_handler/recovery.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl RecoveryManifest {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn has_recovery_files(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn recoverable_entries(&self) -> Vec<(&String, &RecoveryEntry)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn remove_stale_entries(&mut self, max_age_days: u64) -> Vec<RecoveryEntry> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `recovery_path_exists`, `read_content`, `original_has_changed`, and `age_days` are never used
[INFO] [stdout]    --> src/file_handler/recovery.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl RecoveryEntry {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn recovery_path_exists(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn read_content(&self) -> Result<String, RecoveryError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn original_has_changed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn age_days(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_recovery_files`, `get_recoverable`, `recover`, `discard`, `cleanup_stale`, and `save` are never used
[INFO] [stdout]    --> src/file_handler/recovery.rs:267:12
[INFO] [stdout]     |
[INFO] [stdout] 256 | impl RecoveryManager {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub fn has_recovery_files(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn get_recoverable(&self) -> Vec<&RecoveryEntry> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn recover(&self, document_id: &str) -> Result<String, RecoveryError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     pub fn discard(&mut self, document_id: &str) -> Result<(), RecoveryError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 336 |     pub fn cleanup_stale(&mut self, max_age_days: u64) -> Result<usize, RecoveryError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn save(&mut self) -> Result<(), RecoveryError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NotFound` is never constructed
[INFO] [stdout]    --> src/file_handler/recovery.rs:397:5
[INFO] [stdout]     |
[INFO] [stdout] 386 | pub enum RecoveryError {
[INFO] [stdout]     |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 397 |     NotFound,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RecoveryError` 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: struct `MarkdownRenderer` is never constructed
[INFO] [stdout]   --> src/markdown/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct MarkdownRenderer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/markdown/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl MarkdownRenderer {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 38 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn set_color_scheme(&mut self, dark_mode: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn color_scheme(&self) -> &SyntaxColorScheme {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn tokenizer(&mut self) -> &mut MarkdownTokenizer {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn preview_renderer(&self) -> &PreviewRenderer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn tokenize_document(&mut self, lines: &[&str]) -> Vec<LineTokens> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn render_preview(&self, markdown: &str) -> Vec<PreviewElement> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn render_html(&self, markdown: &str) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn invalidate_from_line(&mut self, line_num: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn clear_cache(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenType` is never used
[INFO] [stdout]   --> src/markdown/syntax.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum TokenType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Token` is never constructed
[INFO] [stdout]   --> src/markdown/syntax.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Token {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_nested`, `len`, and `is_empty` are never used
[INFO] [stdout]   --> src/markdown/syntax.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl Token {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 65 |     pub fn new(token_type: TokenType, start: usize, end: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn with_nested(mut self, nested: Token) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenStyle` is never constructed
[INFO] [stdout]   --> src/markdown/syntax.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct TokenStyle {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SyntaxColorScheme` is never constructed
[INFO] [stdout]    --> src/markdown/syntax.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct SyntaxColorScheme {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `light`, `dark`, and `get_style` are never used
[INFO] [stdout]    --> src/markdown/syntax.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | impl SyntaxColorScheme {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] 122 |     /// Create the default light color scheme
[INFO] [stdout] 123 |     pub fn light() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |     pub fn dark() -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 484 |     pub fn get_style(&self, token_type: TokenType) -> TokenStyle {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LineState` is never used
[INFO] [stdout]    --> src/markdown/syntax.rs:491:10
[INFO] [stdout]     |
[INFO] [stdout] 491 | pub enum LineState {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LineTokens` is never constructed
[INFO] [stdout]    --> src/markdown/syntax.rs:502:12
[INFO] [stdout]     |
[INFO] [stdout] 502 | pub struct LineTokens {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/markdown/syntax.rs:512:12
[INFO] [stdout]     |
[INFO] [stdout] 511 | impl LineTokens {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 512 |     pub fn new(tokens: Vec<Token>, end_state: LineState, content_hash: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarkdownTokenizer` is never constructed
[INFO] [stdout]    --> src/markdown/syntax.rs:522:12
[INFO] [stdout]     |
[INFO] [stdout] 522 | pub struct MarkdownTokenizer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/markdown/syntax.rs:528:12
[INFO] [stdout]      |
[INFO] [stdout]  527 | impl MarkdownTokenizer {
[INFO] [stdout]      | ---------------------- associated items in this implementation
[INFO] [stdout]  528 |     pub fn new() -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  535 |     pub fn clear_cache(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  540 |     pub fn invalidate_from_line(&mut self, line_num: usize) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  545 |     fn hash_content(content: &str) -> u64 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  553 |     fn get_start_state(&self, line_num: usize) -> LineState {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  564 |     pub fn tokenize_line(&mut self, line_num: usize, content: &str, start_state: LineState) -> &LineTokens {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  581 |     pub fn tokenize_document(&mut self, lines: &[&str]) -> Vec<LineTokens> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  595 |     fn do_tokenize(&self, line: &str, state: LineState) -> (Vec<Token>, LineState) {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  721 |     fn parse_code_fence(&self, line: &str) -> Option<CodeFenceInfo> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  755 |     fn parse_heading(&self, line: &str) -> Option<(usize, usize)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  784 |     fn is_horizontal_rule(&self, line: &str) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  804 |     fn parse_unordered_list(&self, line: &str) -> Option<(usize, bool, bool)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  835 |     fn parse_ordered_list(&self, line: &str) -> Option<usize> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  857 |     fn is_table_row(&self, line: &str) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  864 |     fn tokenize_inline(&self, text: &str, offset: usize) -> Vec<Token> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  985 |     fn find_inline_code(&self, chars: &[char], start: usize) -> Option<(usize, usize)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1012 |     fn find_closing(&self, chars: &[char], start: usize, marker: &str) -> Option<usize> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1035 |     fn find_link(&self, chars: &[char], start: usize) -> Option<(usize, usize)> {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1086 |     fn find_footnote_ref(&self, chars: &[char], start: usize) -> Option<usize> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1106 |     fn is_autolink_start(&self, chars: &[char], pos: usize) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1113 |     fn find_autolink_end(&self, chars: &[char], start: usize) -> Option<usize> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CodeFenceInfo` is never constructed
[INFO] [stdout]     --> src/markdown/syntax.rs:1150:8
[INFO] [stdout]      |
[INFO] [stdout] 1150 | struct CodeFenceInfo {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ViewModeExt` is never used
[INFO] [stdout]   --> src/markdown/preview.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub trait ViewModeExt {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PreviewElement` is never used
[INFO] [stdout]   --> src/markdown/preview.rs:51:10
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub enum PreviewElement {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ListItem` is never constructed
[INFO] [stdout]    --> src/markdown/preview.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub struct ListItem {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskItem` is never constructed
[INFO] [stdout]    --> src/markdown/preview.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub struct TaskItem {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TableAlignment` is never used
[INFO] [stdout]    --> src/markdown/preview.rs:125:10
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum TableAlignment {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StyledText` is never constructed
[INFO] [stdout]    --> src/markdown/preview.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub struct StyledText {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `plain`, `with_bold`, `with_italic`, `with_strikethrough`, `with_code`, and `with_link` are never used
[INFO] [stdout]    --> src/markdown/preview.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl StyledText {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 145 |     pub fn plain(text: impl Into<String>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn with_bold(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn with_italic(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn with_strikethrough(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn with_code(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn with_link(mut self, url: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseContext` is never constructed
[INFO] [stdout]    --> src/markdown/preview.rs:184:8
[INFO] [stdout]     |
[INFO] [stdout] 184 | struct ParseContext {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `push_text` and `take_buffer` are never used
[INFO] [stdout]    --> src/markdown/preview.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | impl ParseContext {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] 210 |     fn push_text(&mut self, text: &str) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     fn take_buffer(&mut self) -> Vec<StyledText> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PreviewRenderer` is never constructed
[INFO] [stdout]    --> src/markdown/preview.rs:240:12
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub struct PreviewRenderer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_base_path`, `render`, `handle_start_tag`, `handle_end_tag`, and `resolve_url` are never used
[INFO] [stdout]    --> src/markdown/preview.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 247 | impl PreviewRenderer {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 248 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn with_base_path(mut self, path: impl AsRef<Path>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn render(&self, markdown: &str) -> Vec<PreviewElement> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     fn handle_start_tag(&self, tag: Tag<'_>, context: &mut ParseContext, stack: &mut Vec<ElementBuilder>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     fn handle_end_tag(&self, tag: Tag<'_>, context: &mut ParseContext, stack: &mut Vec<ElementBuilder>) -> Option<PreviewElement> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 562 |     pub fn resolve_url(&self, url: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ElementBuilder` is never used
[INFO] [stdout]    --> src/markdown/preview.rs:586:6
[INFO] [stdout]     |
[INFO] [stdout] 586 | enum ElementBuilder {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_child`, `add_text`, and `set_task_checked` are never used
[INFO] [stdout]    --> src/markdown/preview.rs:607:8
[INFO] [stdout]     |
[INFO] [stdout] 606 | impl ElementBuilder {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 607 |     fn add_child(&mut self, element: PreviewElement) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 616 |     fn add_text(&mut self, text: Vec<StyledText>) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |     fn set_task_checked(&mut self, checked: bool) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HtmlExporter` is never constructed
[INFO] [stdout]    --> src/markdown/preview.rs:644:12
[INFO] [stdout]     |
[INFO] [stdout] 644 | pub struct HtmlExporter {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_embedded_styles`, `with_embedded_images`, `export`, `get_default_styles`, and `escape_html` are never used
[INFO] [stdout]    --> src/markdown/preview.rs:653:12
[INFO] [stdout]     |
[INFO] [stdout] 652 | impl HtmlExporter {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 653 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 660 |     pub fn with_embedded_styles(mut self, include: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     pub fn with_embedded_images(mut self, embed: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 671 |     pub fn export(&self, markdown: &str, title: Option<&str>) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 712 |     fn get_default_styles(&self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 843 |     fn escape_html(text: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ImageError` is never used
[INFO] [stdout]   --> src/markdown/image.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum ImageError {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ImageResult` is never used
[INFO] [stdout]   --> src/markdown/image.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub type ImageResult<T> = Result<T, ImageError>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageConfig` is never constructed
[INFO] [stdout]   --> src/markdown/image.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct ImageConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ImageFormat` is never used
[INFO] [stdout]   --> src/markdown/image.rs:63:10
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub enum ImageFormat {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `extension`, `from_bytes`, and `from_extension` are never used
[INFO] [stdout]    --> src/markdown/image.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl ImageFormat {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  72 |     /// Get file extension for the format
[INFO] [stdout]  73 |     pub fn extension(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn from_bytes(data: &[u8]) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn from_extension(ext: &str) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageHandler` is never constructed
[INFO] [stdout]    --> src/markdown/image.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct ImageHandler {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/markdown/image.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl ImageHandler {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 138 |     /// Create a new image handler with default config
[INFO] [stdout] 139 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn with_config(config: ImageConfig) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn get_assets_dir(&self, document_path: &Path) -> PathBuf {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn ensure_assets_dir(&self, document_path: &Path) -> ImageResult<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn generate_filename(&self, format: ImageFormat) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn generate_markdown_link(&self, filename: &str, alt_text: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn handle_dropped_file(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn handle_pasted_image(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub fn handle_dropped_files(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn is_supported_image(path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn list_assets(&self, document_path: &Path) -> ImageResult<Vec<PathBuf>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn delete_asset(&self, document_path: &Path, filename: &str) -> ImageResult<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 316 |     pub fn cleanup_unused(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `diff_paths` is never used
[INFO] [stdout]    --> src/markdown/image.rs:353:12
[INFO] [stdout]     |
[INFO] [stdout] 353 |     pub fn diff_paths(path: &Path, base: &Path) -> Option<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportError` is never used
[INFO] [stdout]   --> src/markdown/export.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum ExportError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ExportResult` is never used
[INFO] [stdout]   --> src/markdown/export.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub type ExportResult<T> = Result<T, ExportError>;
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportFormat` is never used
[INFO] [stdout]   --> src/markdown/export.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum ExportFormat {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `extension` and `display_name` are never used
[INFO] [stdout]   --> src/markdown/export.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl ExportFormat {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 37 |     /// Get the file extension for the format
[INFO] [stdout] 38 |     pub fn extension(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn display_name(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HtmlExportOptions` is never constructed
[INFO] [stdout]   --> src/markdown/export.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct HtmlExportOptions {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MarkdownExporter` is never constructed
[INFO] [stdout]   --> src/markdown/export.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct MarkdownExporter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/markdown/export.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl MarkdownExporter {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  88 |     /// Create a new exporter
[INFO] [stdout]  89 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn export_html(&self, markdown: &str, options: &HtmlExportOptions) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn export_html_file(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn export_to_file(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn suggest_output_path(input_path: &Path, format: ExportFormat) -> PathBuf {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     fn generate_toc(markdown: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     fn generate_anchor(text: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     fn escape_html(text: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn get_styles(dark_mode: bool, custom_css: Option<&str>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchState` is never constructed
[INFO] [stdout]   --> src/search/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SearchState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/search/mod.rs:36:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl SearchState {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  35 |     /// Create a new search state
[INFO] [stdout]  36 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn set_query(&mut self, query: String) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn set_replace_text(&mut self, text: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn toggle_case_sensitive(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn toggle_whole_word(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn toggle_regex(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn update_results(&mut self, results: Vec<FindResult>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn next_result(&mut self) -> Option<&FindResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn prev_result(&mut self) -> Option<&FindResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn current_result(&self) -> Option<&FindResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn result_count_display(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn open_find(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn open_replace(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn close(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn is_open(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SearchDirection` is never used
[INFO] [stdout]   --> src/search/find.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum SearchDirection {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `range`, `len`, and `is_empty` are never used
[INFO] [stdout]   --> src/search/find.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl FindResult {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn range(&self) -> Range<usize> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `find_next`, `find_prev`, and `replace_at` are never used
[INFO] [stdout]    --> src/search/find.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl SearchEngine {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn find_next(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn find_prev(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn replace_at(text: &str, range: Range<usize>, replacement: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INDENT_PER_LEVEL` is never used
[INFO] [stdout]   --> src/ui/sidebar.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const INDENT_PER_LEVEL: u16 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROW_HEIGHT` is never used
[INFO] [stdout]   --> src/ui/sidebar.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const ROW_HEIGHT: u16 = 28;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_sidebar` is never used
[INFO] [stdout]   --> src/ui/sidebar.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn view_sidebar<'a>(state: &'a SidebarState) -> Element<'a, Message> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_search_bar` is never used
[INFO] [stdout]   --> src/ui/sidebar.rs:44:4
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn view_search_bar<'a>(state: &'a SidebarState) -> Element<'a, Message> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_file_list` is never used
[INFO] [stdout]   --> src/ui/sidebar.rs:59:4
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn view_file_list<'a>(state: &'a SidebarState) -> Element<'a, Message> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_no_folder_open` is never used
[INFO] [stdout]    --> src/ui/sidebar.rs:111:4
[INFO] [stdout]     |
[INFO] [stdout] 111 | fn view_no_folder_open<'a>() -> Element<'a, Message> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_file_entry` is never used
[INFO] [stdout]    --> src/ui/sidebar.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn view_file_entry<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `view_sidebar_header` is never used
[INFO] [stdout]    --> src/ui/sidebar.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn view_sidebar_header<'a>(state: &'a SidebarState) -> Element<'a, Message> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatusBarInfo` is never constructed
[INFO] [stdout]   --> src/ui/status_bar.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct StatusBarInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `cursor_display`, `selection_display`, and `stats_display` are never used
[INFO] [stdout]   --> src/ui/status_bar.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl StatusBarInfo {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 44 |     /// Create a new status bar info
[INFO] [stdout] 45 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn cursor_display(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn selection_display(&self) -> Option<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn stats_display(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatusBar` is never constructed
[INFO] [stdout]   --> src/ui/status_bar.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct StatusBar;
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `view`, `view_minimal`, and `view_with_find` are never used
[INFO] [stdout]    --> src/ui/status_bar.rs:87:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl StatusBar {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout]  86 |     /// Create the status bar view
[INFO] [stdout]  87 |     pub fn view<'a>(info: &'a StatusBarInfo) -> Element<'a, Message> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn view_minimal<'a>(info: &'a StatusBarInfo) -> Element<'a, Message> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn view_with_find<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_status_info` is never used
[INFO] [stdout]    --> src/ui/status_bar.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn build_status_info(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TabInfo` is never constructed
[INFO] [stdout]   --> src/ui/tab_bar.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct TabInfo {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `display_title` are never used
[INFO] [stdout]   --> src/ui/tab_bar.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl TabInfo {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 27 |     /// Create a new tab info
[INFO] [stdout] 28 |     pub fn new(id: DocumentId, title: String, is_modified: bool, path: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn display_title(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TabBar` is never constructed
[INFO] [stdout]   --> src/ui/tab_bar.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct TabBar;
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `view`, `render_tab`, and `view_minimal` are never used
[INFO] [stdout]    --> src/ui/tab_bar.rs:52:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl TabBar {
[INFO] [stdout]     | ----------- associated functions in this implementation
[INFO] [stdout]  51 |     /// Create the tab bar view
[INFO] [stdout]  52 |     pub fn view<'a>(
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     fn render_tab(tab: &TabInfo, is_active: bool) -> Element<'static, Message> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn view_minimal<'a>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TabContextAction` is never used
[INFO] [stdout]    --> src/ui/tab_bar.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub enum TabContextAction {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]    --> src/ui/tab_bar.rs:150:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | impl TabContextAction {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 149 |     /// Get display label for the action
[INFO] [stdout] 150 |     pub fn label(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Debouncer` is never constructed
[INFO] [stdout]   --> src/utils/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Debouncer {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `should_trigger`, and `reset` are never used
[INFO] [stdout]   --> src/utils/mod.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Debouncer {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new(delay_ms: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn should_trigger(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_stem` is never used
[INFO] [stdout]   --> src/utils/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn file_stem(path: &Path) -> Option<String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extension` is never used
[INFO] [stdout]   --> src/utils/mod.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub fn extension(path: &Path) -> Option<String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_markdown` is never used
[INFO] [stdout]   --> src/utils/mod.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn is_markdown(path: &Path) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `relative_to` is never used
[INFO] [stdout]   --> src/utils/mod.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pub fn relative_to(path: &Path, base: &Path) -> Option<PathBuf> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expand_tilde` is never used
[INFO] [stdout]   --> src/utils/mod.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn expand_tilde(path: &Path) -> PathBuf {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `word_count` is never used
[INFO] [stdout]   --> src/utils/mod.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn word_count(text: &str) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_count` is never used
[INFO] [stdout]    --> src/utils/mod.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub fn line_count(text: &str) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_at_offset` is never used
[INFO] [stdout]    --> src/utils/mod.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 |     pub fn line_at_offset(text: &str, offset: usize) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate` is never used
[INFO] [stdout]    --> src/utils/mod.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 118 |     pub fn truncate(s: &str, max_len: usize) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IconCacheKey` is never constructed
[INFO] [stdout]   --> src/icon_cache.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct IconCacheKey {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IconCache` is never constructed
[INFO] [stdout]   --> src/icon_cache.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct IconCache {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `get_handle` are never used
[INFO] [stdout]   --> src/icon_cache.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl IconCache {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 24 |     /// Create a new icon cache with all bundled icons
[INFO] [stdout] 25 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn get(&mut self, name: &'static str, size: u16) -> icon::Icon {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn get_handle(&self, name: &'static str, size: u16) -> Option<icon::Handle> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_MARKDOWN` is never used
[INFO] [stdout]   --> src/icon_cache.rs:95:15
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub const FILE_MARKDOWN: &str = "file-markdown-symbolic";
[INFO] [stdout]    |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FOLDER_OPEN` is never used
[INFO] [stdout]   --> src/icon_cache.rs:98:15
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub const FOLDER_OPEN: &str = "folder-open-symbolic";
[INFO] [stdout]    |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FOLDER_CLOSED` is never used
[INFO] [stdout]    --> src/icon_cache.rs:101:15
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub const FOLDER_CLOSED: &str = "folder-closed-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TAB_CLOSE` is never used
[INFO] [stdout]    --> src/icon_cache.rs:104:15
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub const TAB_CLOSE: &str = "tab-close-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TAB_UNSAVED` is never used
[INFO] [stdout]    --> src/icon_cache.rs:107:15
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub const TAB_UNSAVED: &str = "tab-unsaved-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEARCH` is never used
[INFO] [stdout]    --> src/icon_cache.rs:110:15
[INFO] [stdout]     |
[INFO] [stdout] 110 |     pub const SEARCH: &str = "search-symbolic";
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SETTINGS` is never used
[INFO] [stdout]    --> src/icon_cache.rs:113:15
[INFO] [stdout]     |
[INFO] [stdout] 113 |     pub const SETTINGS: &str = "settings-symbolic";
[INFO] [stdout]     |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PREVIEW` is never used
[INFO] [stdout]    --> src/icon_cache.rs:116:15
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub const PREVIEW: &str = "preview-symbolic";
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPLIT_VIEW` is never used
[INFO] [stdout]    --> src/icon_cache.rs:119:15
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub const SPLIT_VIEW: &str = "split-view-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISTRACTION_FREE` is never used
[INFO] [stdout]    --> src/icon_cache.rs:122:15
[INFO] [stdout]     |
[INFO] [stdout] 122 |     pub const DISTRACTION_FREE: &str = "distraction-free-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOCUMENT_NEW` is never used
[INFO] [stdout]    --> src/icon_cache.rs:125:15
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub const DOCUMENT_NEW: &str = "document-new-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOCUMENT_OPEN` is never used
[INFO] [stdout]    --> src/icon_cache.rs:126:15
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub const DOCUMENT_OPEN: &str = "document-open-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOCUMENT_SAVE` is never used
[INFO] [stdout]    --> src/icon_cache.rs:127:15
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub const DOCUMENT_SAVE: &str = "document-save-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EDIT_UNDO` is never used
[INFO] [stdout]    --> src/icon_cache.rs:128:15
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub const EDIT_UNDO: &str = "edit-undo-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EDIT_REDO` is never used
[INFO] [stdout]    --> src/icon_cache.rs:129:15
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub const EDIT_REDO: &str = "edit-redo-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EDIT_CUT` is never used
[INFO] [stdout]    --> src/icon_cache.rs:130:15
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub const EDIT_CUT: &str = "edit-cut-symbolic";
[INFO] [stdout]     |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EDIT_COPY` is never used
[INFO] [stdout]    --> src/icon_cache.rs:131:15
[INFO] [stdout]     |
[INFO] [stdout] 131 |     pub const EDIT_COPY: &str = "edit-copy-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EDIT_PASTE` is never used
[INFO] [stdout]    --> src/icon_cache.rs:132:15
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub const EDIT_PASTE: &str = "edit-paste-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EDIT_FIND` is never used
[INFO] [stdout]    --> src/icon_cache.rs:133:15
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub const EDIT_FIND: &str = "edit-find-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WINDOW_CLOSE` is never used
[INFO] [stdout]    --> src/icon_cache.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 |     pub const WINDOW_CLOSE: &str = "window-close-symbolic";
[INFO] [stdout]     |               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GO_NEXT` is never used
[INFO] [stdout]    --> src/icon_cache.rs:135:15
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub const GO_NEXT: &str = "go-next-symbolic";
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GO_DOWN` is never used
[INFO] [stdout]    --> src/icon_cache.rs:136:15
[INFO] [stdout]     |
[INFO] [stdout] 136 |     pub const GO_DOWN: &str = "go-down-symbolic";
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LIST_ADD` is never used
[INFO] [stdout]    --> src/icon_cache.rs:137:15
[INFO] [stdout]     |
[INFO] [stdout] 137 |     pub const LIST_ADD: &str = "list-add-symbolic";
[INFO] [stdout]     |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `SaveAll` and `CloseAll` are never constructed
[INFO] [stdout]   --> src/menu.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum Action {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     SaveAll,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 27 |     CloseFile,
[INFO] [stdout] 28 |     CloseAll,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Action` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MenuItems` is never used
[INFO] [stdout]    --> src/menu.rs:264:10
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub type MenuItems = Vec<(&'static str, Vec<Item<Action, &'static str>>)>;
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `menu_items` is never used
[INFO] [stdout]    --> src/menu.rs:267:8
[INFO] [stdout]     |
[INFO] [stdout] 267 | pub fn menu_items(_key_binds: &HashMap<KeyBind, Action>) -> MenuItems {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init` is never used
[INFO] [stdout]   --> src/i18n.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn init() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_language` is never used
[INFO] [stdout]   --> src/i18n.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn current_language() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/file_handler/watcher.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |         let mode = if self.config.recursive {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `tokenizer` as mutable more than once at a time
[INFO] [stdout]     --> src/markdown/syntax.rs:1175:21
[INFO] [stdout]      |
[INFO] [stdout] 1172 |         let line1 = tokenizer.tokenize_line(0, "```rust", LineState::Normal);
[INFO] [stdout]      |                     --------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 1175 |         let line2 = tokenizer.tokenize_line(1, "let x = 42;", line1.end_state);
[INFO] [stdout]      |                     ^^^^^^^^^                                 --------------- first borrow later used here
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     second mutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0499]: cannot borrow `tokenizer` as mutable more than once at a time
[INFO] [stdout]     --> src/markdown/syntax.rs:1178:21
[INFO] [stdout]      |
[INFO] [stdout] 1175 |         let line2 = tokenizer.tokenize_line(1, "let x = 42;", line1.end_state);
[INFO] [stdout]      |                     --------- first mutable borrow occurs here
[INFO] [stdout] ...
[INFO] [stdout] 1178 |         let line3 = tokenizer.tokenize_line(2, "```", line2.end_state);
[INFO] [stdout]      |                     ^^^^^^^^^                         --------------- first borrow later used here
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     second mutable borrow occurs here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0499.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `cosmic-notebook` (bin "cosmic-notebook" test) due to 3 previous errors; 21 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "024e3a8589ff730db34256a85a33a2dd9f2a04edce312aac55f9fa344c3f60cd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "024e3a8589ff730db34256a85a33a2dd9f2a04edce312aac55f9fa344c3f60cd", kill_on_drop: false }`
[INFO] [stdout] 024e3a8589ff730db34256a85a33a2dd9f2a04edce312aac55f9fa344c3f60cd
