[INFO] cloning repository https://github.com/RemydreScarlet/folio
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/RemydreScarlet/folio" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRemydreScarlet%2Ffolio", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRemydreScarlet%2Ffolio'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e11a9775d7053c8ca63723b7ac6d235555374b1d
[INFO] checking RemydreScarlet/folio against 165655a2f1981fef27b31c547ad7631979fc5139 for pr-160235
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FRemydreScarlet%2Ffolio" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/RemydreScarlet/folio
[INFO] finished tweaking git repo https://github.com/RemydreScarlet/folio
[INFO] tweaked toml for git repo https://github.com/RemydreScarlet/folio written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/RemydreScarlet/folio on toolchain 165655a2f1981fef27b31c547ad7631979fc5139
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+165655a2f1981fef27b31c547ad7631979fc5139" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/RemydreScarlet/folio 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" "+165655a2f1981fef27b31c547ad7631979fc5139" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151
[INFO] running `Command { std: "docker" "start" "9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151" "/opt/rustwide/cargo-home/bin/cargo" "+165655a2f1981fef27b31c547ad7631979fc5139" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151" "/opt/rustwide/cargo-home/bin/cargo" "+165655a2f1981fef27b31c547ad7631979fc5139" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling toml_edit v0.25.13+spec-1.1.0
[INFO] [stderr]    Compiling wayland-scanner v0.31.10
[INFO] [stderr]     Checking arrayvec v0.7.8
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]    Compiling anyhow v1.0.103
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]     Checking memmap2 v0.9.11
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking as-slice v0.2.1
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling built v0.8.1
[INFO] [stderr]     Checking accesskit v0.17.1
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]     Checking aligned v0.4.3
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking sha1 v0.10.7
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking no_std_io2 v0.9.4
[INFO] [stderr]    Compiling pulp v0.22.3
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking y4m v0.8.0
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]     Checking bitstream-io v4.10.0
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking async-executor v1.14.0
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking rayon-core v1.13.0
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]    Compiling jobserver v0.1.35
[INFO] [stderr]     Checking immutable-chunkmap v2.1.3
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]    Compiling winit v0.30.13
[INFO] [stderr]    Compiling cc v1.2.67
[INFO] [stderr]     Checking num-bigint v0.4.8
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking pulp-wasm-simd-flag v0.1.1
[INFO] [stderr]     Checking reborrow v0.5.5
[INFO] [stderr]     Checking imgref v1.12.2
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]     Checking zune-core v0.5.1
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking async-fs v2.2.0
[INFO] [stderr]     Checking zune-jpeg v0.5.15
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]     Checking accesskit_consumer v0.26.0
[INFO] [stderr]     Checking avif-serialize v0.8.9
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking rgb v0.8.53
[INFO] [stderr]     Checking fax v0.2.7
[INFO] [stderr]     Checking epaint_default_fonts v0.31.1
[INFO] [stderr]     Checking gif v0.14.2
[INFO] [stderr]     Checking image-webp v0.2.4
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]    Compiling glutin v0.32.3
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]     Checking regex-syntax v0.8.11
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking glow v0.16.0
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]     Checking bumpalo v3.20.3
[INFO] [stderr]     Checking time v0.3.53
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking zopfli v0.8.3
[INFO] [stderr]     Checking lzma-rs v0.3.0
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.10
[INFO] [stderr]     Checking deflate64 v0.1.12
[INFO] [stderr]     Checking serde_json v1.0.150
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking quick-xml v0.37.5
[INFO] [stderr]    Compiling wayland-backend v0.3.15
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling lzma-sys v0.1.20
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]    Compiling libsqlite3-sys v0.32.0
[INFO] [stderr]     Checking bzip2 v0.5.2
[INFO] [stderr]     Checking xz2 v0.1.7
[INFO] [stderr]     Checking regex-automata v0.4.16
[INFO] [stderr]    Compiling zvariant_utils v2.1.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking async-io v2.6.0
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.54
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling bytemuck_derive v1.11.0
[INFO] [stderr]    Compiling zvariant_derive v4.2.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]     Checking wayland-client v0.31.14
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling zbus_macros v4.4.0
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]     Checking bytemuck v1.25.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling profiling-procmacros v1.0.18
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking zerocopy v0.8.54
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking emath v0.31.1
[INFO] [stderr]     Checking wayland-protocols v0.32.13
[INFO] [stderr]     Checking wayland-cursor v0.31.14
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]     Checking calloop v0.14.4
[INFO] [stderr]     Checking ecolor v0.31.1
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]    Compiling zeroize_derive v1.5.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking zeroize v1.9.0
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]    Compiling quick-xml v0.30.0
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]    Compiling zvariant v4.2.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking epaint v0.31.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking exr v1.74.2
[INFO] [stderr]     Checking tiff v0.11.3
[INFO] [stderr]     Checking rand v0.8.7
[INFO] [stderr]     Checking webbrowser v1.2.1
[INFO] [stderr]     Checking egui v0.31.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.12
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.12
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.12
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking zbus_names v3.0.0
[INFO] [stderr]     Checking zbus_xml v4.0.0
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]     Checking zbus-lockstep v0.4.4
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking smithay-client-toolkit v0.20.0
[INFO] [stderr]     Checking ravif v0.13.0
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.4.4
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]     Checking egui_glow v0.31.1
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking rusqlite v0.34.0
[INFO] [stderr]     Checking atspi-common v0.6.0
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking atspi-proxies v0.6.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.10.1
[INFO] [stderr]     Checking atspi-connection v0.6.0
[INFO] [stderr]     Checking atspi v0.22.0
[INFO] [stderr]     Checking accesskit_unix v0.13.1
[INFO] [stderr]     Checking accesskit_winit v0.23.1
[INFO] [stderr]     Checking egui-winit v0.31.1
[INFO] [stderr]     Checking eframe v0.31.1
[INFO] [stderr]     Checking folio v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::document::content::*`
[INFO] [stdout]  --> src/document/format.rs:1:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub use crate::document::content::*;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::document::content::*`
[INFO] [stdout]  --> src/document/format.rs:1:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub use crate::document::content::*;
[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: `Paragraph` and `TextRun`
[INFO] [stdout]  --> src/ui/editor.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::document::{Block, InlineElement, Mark, Paragraph, TextRun};
[INFO] [stdout]   |                                                   ^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Paragraph` and `TextRun`
[INFO] [stdout]  --> src/ui/editor.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::document::{Block, InlineElement, Mark, Paragraph, TextRun};
[INFO] [stdout]   |                                                   ^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `object::Hash`
[INFO] [stdout]   --> src/vcs/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use object::Hash;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `object::Hash`
[INFO] [stdout]   --> src/vcs/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use object::Hash;
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/converter/docx/styles.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |     let mut paragraph_format = ParagraphFormat::default();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/converter/docx/styles.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let mut character_format = CharacterFormat::default();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/converter/docx/styles.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |     let mut paragraph_format = ParagraphFormat::default();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/converter/docx/styles.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let mut character_format = CharacterFormat::default();
[INFO] [stdout]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `serialize`, `deserialize`, `load`, and `save` are never used
[INFO] [stdout]   --> src/converter/folio.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl FolioFormat {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout]  7 |     /// Serialize document to .folio format (JSON)
[INFO] [stdout]  8 |     pub fn serialize(doc: &Document) -> Result<Vec<u8>, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn deserialize(data: &[u8]) -> Result<Document, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn load(path: impl AsRef<std::path::Path>) -> Result<Document, String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn save(doc: &Document, path: impl AsRef<std::path::Path>) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `builder`, and `character_count` are never used
[INFO] [stdout]   --> src/document/mod.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl Document {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 66 |     pub fn new(title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn builder() -> DocumentBuilder {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn character_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DocumentBuilder` is never constructed
[INFO] [stdout]  --> src/document/builder.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct DocumentBuilder {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/document/builder.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl DocumentBuilder {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn title(mut self, title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn author(mut self, author: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn add_paragraph(mut self, text: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn add_formatted_paragraph(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn add_heading(mut self, level: u8, text: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn add_bullet_list(mut self, items: Vec<impl Into<String>>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn add_numbered_list(mut self, items: Vec<impl Into<String>>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     fn add_block(&mut self, block: Block) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn build(mut self) -> Document {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Image` is never constructed
[INFO] [stdout]  --> src/document/image.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Image {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageData` is never constructed
[INFO] [stdout]   --> src/document/image.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ImageData {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ImageFormat` is never used
[INFO] [stdout]   --> src/document/image.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum ImageFormat {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mime_type` and `extension` are never used
[INFO] [stdout]   --> src/document/image.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl ImageFormat {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 28 |     pub fn mime_type(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn extension(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `character` is never used
[INFO] [stdout]   --> src/document/style.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Style {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn character(id: impl Into<String>, name: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `document` and `selection` are never read
[INFO] [stdout]   --> src/engine/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct EditorState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 16 |     pub document: Document,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 17 |     pub cursor: CursorState,
[INFO] [stdout] 18 |     pub selection: Selection,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `move_to_start`, and `move_to_end` are never used
[INFO] [stdout]   --> src/engine/cursor.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl CursorState {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(block: usize, inline: usize, offset: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn move_to_start(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn move_to_end(&mut self, len: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tab_width` is never read
[INFO] [stdout]  --> src/engine/edit.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct EditEngine {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 8 |     pub tab_width: usize,
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `EditEngine` 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 `insert_new_paragraph` and `delete_block` are never used
[INFO] [stdout]   --> src/engine/edit.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl EditEngine {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn insert_new_paragraph(&self, doc: &mut Document, index: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn delete_block(&self, doc: &mut Document, index: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]   --> src/engine/history.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl UndoHistory {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `block_index`, `lines`, `height`, and `y_offset` are never read
[INFO] [stdout]  --> src/engine/layout.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct LayoutBlock {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 5 |     pub block_index: usize,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 6 |     pub lines: Vec<LayoutLine>,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 7 |     pub height: f32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 8 |     pub y_offset: f32,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `LayoutBlock` 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 `glyph_runs`, `height`, `baseline`, and `width` are never read
[INFO] [stdout]   --> src/engine/layout.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LayoutLine {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 13 |     pub glyph_runs: Vec<GlyphRun>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 14 |     pub height: f32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 15 |     pub baseline: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 16 |     pub width: f32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LayoutLine` 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 fields are never read
[INFO] [stdout]   --> src/engine/layout.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct GlyphRun {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 21 |     pub text: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 22 |     pub font_size: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 23 |     pub bold: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 24 |     pub italic: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 25 |     pub x: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout] 26 |     pub y: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout] 27 |     pub width: f32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphRun` 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 `margin_left` and `margin_right` are never read
[INFO] [stdout]   --> src/engine/layout.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct LayoutEngine {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 35 |     margin_left: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 36 |     margin_right: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LayoutEngine` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `block_at_y` is never used
[INFO] [stdout]    --> src/engine/layout.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl LayoutEngine {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn block_at_y(&self, y: f32) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_empty`, `has_selection`, `clear`, `start`, and `end` are never used
[INFO] [stdout]   --> src/engine/selection.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Selection {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(anchor: CursorState, active: CursorState) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn has_selection(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn start(&self) -> Option<CursorState> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn end(&self) -> Option<CursorState> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Folio` is never constructed
[INFO] [stdout]  --> src/format/folio.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Folio;
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `serialize`, `deserialize`, `load`, and `save` are never used
[INFO] [stdout]   --> src/format/folio.rs:7:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Folio {
[INFO] [stdout]    | ---------- associated functions in this implementation
[INFO] [stdout]  7 |     pub fn serialize(doc: &Document) -> Result<Vec<u8>, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub fn deserialize(data: &[u8]) -> Result<Document, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn load(path: impl AsRef<std::path::Path>) -> Result<Document, String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn save(doc: &Document, path: impl AsRef<std::path::Path>) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Markdown` is never constructed
[INFO] [stdout]  --> src/format/markdown.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Markdown;
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `to_markdown` and `from_markdown` are never used
[INFO] [stdout]   --> src/format/markdown.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Markdown {
[INFO] [stdout]    | ------------- associated functions in this implementation
[INFO] [stdout]  8 |     /// Convert a Folio Document to Markdown text
[INFO] [stdout]  9 |     pub fn to_markdown(doc: &Document) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn from_markdown(text: &str, title: &str) -> Document {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `heading_level` is never used
[INFO] [stdout]   --> src/format/markdown.rs:87:4
[INFO] [stdout]    |
[INFO] [stdout] 87 | fn heading_level(line: &str) -> Option<u8> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inlines_to_text` is never used
[INFO] [stdout]    --> src/format/markdown.rs:102:4
[INFO] [stdout]     |
[INFO] [stdout] 102 | fn inlines_to_text(inlines: &[InlineElement]) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_connected` is never used
[INFO] [stdout]   --> src/storage/db.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Database {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn is_connected(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `font_size` is never read
[INFO] [stdout]   --> src/ui/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct UIState {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub font_size: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UIState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Settings` and `ExportDocx` are never constructed
[INFO] [stdout]   --> src/ui/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum DialogType {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 31 |     Settings,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     ExportDocx,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DialogType` 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 `render` is never used
[INFO] [stdout]   --> src/ui/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl UIState {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 38 |     pub fn render(&mut self, ctx: &egui::Context, app: &mut FolioApp) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `upstream` is never read
[INFO] [stdout]  --> src/vcs/branch.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Branch {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 7 |     pub upstream: Option<String>,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Branch` 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 `new` is never used
[INFO] [stdout]   --> src/vcs/commit.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Signature {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new(name: impl Into<String>, email: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DiffEntry` is never used
[INFO] [stdout]  --> src/vcs/diff.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum DiffEntry {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Change` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum Change {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `diff` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn diff(old: &Document, new: &Document) -> Vec<DiffEntry> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `flatten_blocks` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn flatten_blocks(doc: &Document) -> Vec<&Block> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocks_equal` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn blocks_equal(a: &&Block, b: &&Block) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inline_elements_equal` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn inline_elements_equal(a: &[InlineElement], b: &[InlineElement]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]   --> src/vcs/log.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl LogEntry {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Conflict` is never used
[INFO] [stdout]  --> src/vcs/merge.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Conflict {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DeleteAction` is never used
[INFO] [stdout]   --> src/vcs/merge.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum DeleteAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Side` is never used
[INFO] [stdout]   --> src/vcs/merge.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum Side {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MergeResult` is never constructed
[INFO] [stdout]   --> src/vcs/merge.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct MergeResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge` is never used
[INFO] [stdout]   --> src/vcs/merge.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn merge(
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_change` is never used
[INFO] [stdout]   --> src/vcs/merge.rs:80:4
[INFO] [stdout]    |
[INFO] [stdout] 80 | fn apply_change(doc: &mut Document, change: &DiffEntry) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_conflict` is never used
[INFO] [stdout]    --> src/vcs/merge.rs:102:4
[INFO] [stdout]     |
[INFO] [stdout] 102 | fn check_conflict(source_changes: &[DiffEntry], index: &usize) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_hex` is never used
[INFO] [stdout]   --> src/vcs/object.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Hash {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn as_hex(&self) -> String {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Object` is never used
[INFO] [stdout]   --> src/vcs/object.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum Object {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Blob` is never constructed
[INFO] [stdout]   --> src/vcs/object.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct Blob {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommitData` is never constructed
[INFO] [stdout]   --> src/vcs/object.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct CommitData {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_storage`, `current_branch`, and `checkout` are never used
[INFO] [stdout]    --> src/vcs/repository.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl Repository {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn with_storage(mut self, storage: VcsStorage) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn current_branch(&self) -> Option<&Branch> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn checkout(&mut self, commit_hash: Hash) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_blob`, `get_tree`, `get_commit`, and `get_ref` are never used
[INFO] [stdout]   --> src/vcs/storage.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl VcsStorage {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn get_blob(&self, hash: Hash) -> Result<Option<Vec<u8>>, String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn get_tree(&self, hash: Hash) -> Result<Option<Tree>, String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_commit(&self, hash: Hash) -> Result<Option<Commit>, String> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn get_ref(&self, name: &str) -> Result<Option<Hash>, String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `serialize`, `deserialize`, `load`, and `save` are never used
[INFO] [stdout]   --> src/converter/folio.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl FolioFormat {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout]  7 |     /// Serialize document to .folio format (JSON)
[INFO] [stdout]  8 |     pub fn serialize(doc: &Document) -> Result<Vec<u8>, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn deserialize(data: &[u8]) -> Result<Document, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn load(path: impl AsRef<std::path::Path>) -> Result<Document, String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn save(doc: &Document, path: impl AsRef<std::path::Path>) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `builder`, and `character_count` are never used
[INFO] [stdout]   --> src/document/mod.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl Document {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 66 |     pub fn new(title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn builder() -> DocumentBuilder {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn character_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DocumentBuilder` is never constructed
[INFO] [stdout]  --> src/document/builder.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct DocumentBuilder {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/document/builder.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl DocumentBuilder {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn title(mut self, title: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn author(mut self, author: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn add_paragraph(mut self, text: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn add_formatted_paragraph(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn add_heading(mut self, level: u8, text: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn add_bullet_list(mut self, items: Vec<impl Into<String>>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn add_numbered_list(mut self, items: Vec<impl Into<String>>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     fn add_block(&mut self, block: Block) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn build(mut self) -> Document {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Image` is never constructed
[INFO] [stdout]  --> src/document/image.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Image {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageData` is never constructed
[INFO] [stdout]   --> src/document/image.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ImageData {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ImageFormat` is never used
[INFO] [stdout]   --> src/document/image.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum ImageFormat {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mime_type` and `extension` are never used
[INFO] [stdout]   --> src/document/image.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl ImageFormat {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 28 |     pub fn mime_type(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn extension(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `character` is never used
[INFO] [stdout]   --> src/document/style.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Style {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn character(id: impl Into<String>, name: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `document` and `selection` are never read
[INFO] [stdout]   --> src/engine/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct EditorState {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 16 |     pub document: Document,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 17 |     pub cursor: CursorState,
[INFO] [stdout] 18 |     pub selection: Selection,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `move_to_start`, and `move_to_end` are never used
[INFO] [stdout]   --> src/engine/cursor.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl CursorState {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(block: usize, inline: usize, offset: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn move_to_start(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn move_to_end(&mut self, len: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tab_width` is never read
[INFO] [stdout]  --> src/engine/edit.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct EditEngine {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 8 |     pub tab_width: usize,
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `EditEngine` 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 `insert_new_paragraph` and `delete_block` are never used
[INFO] [stdout]   --> src/engine/edit.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl EditEngine {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn insert_new_paragraph(&self, doc: &mut Document, index: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99 |     pub fn delete_block(&self, doc: &mut Document, index: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]   --> src/engine/history.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl UndoHistory {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `block_index`, `lines`, `height`, and `y_offset` are never read
[INFO] [stdout]  --> src/engine/layout.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct LayoutBlock {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 5 |     pub block_index: usize,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 6 |     pub lines: Vec<LayoutLine>,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 7 |     pub height: f32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 8 |     pub y_offset: f32,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `LayoutBlock` 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 `glyph_runs`, `height`, `baseline`, and `width` are never read
[INFO] [stdout]   --> src/engine/layout.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct LayoutLine {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 13 |     pub glyph_runs: Vec<GlyphRun>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 14 |     pub height: f32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 15 |     pub baseline: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 16 |     pub width: f32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LayoutLine` 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 fields are never read
[INFO] [stdout]   --> src/engine/layout.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct GlyphRun {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 21 |     pub text: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 22 |     pub font_size: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 23 |     pub bold: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 24 |     pub italic: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 25 |     pub x: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout] 26 |     pub y: f32,
[INFO] [stdout]    |         ^
[INFO] [stdout] 27 |     pub width: f32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphRun` 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 `margin_left` and `margin_right` are never read
[INFO] [stdout]   --> src/engine/layout.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct LayoutEngine {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 35 |     margin_left: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 36 |     margin_right: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LayoutEngine` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `block_at_y` is never used
[INFO] [stdout]    --> src/engine/layout.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl LayoutEngine {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn block_at_y(&self, y: f32) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_empty`, `has_selection`, `clear`, `start`, and `end` are never used
[INFO] [stdout]   --> src/engine/selection.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Selection {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn new(anchor: CursorState, active: CursorState) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn has_selection(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn start(&self) -> Option<CursorState> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn end(&self) -> Option<CursorState> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Folio` is never constructed
[INFO] [stdout]  --> src/format/folio.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Folio;
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `serialize`, `deserialize`, `load`, and `save` are never used
[INFO] [stdout]   --> src/format/folio.rs:7:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Folio {
[INFO] [stdout]    | ---------- associated functions in this implementation
[INFO] [stdout]  7 |     pub fn serialize(doc: &Document) -> Result<Vec<u8>, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub fn deserialize(data: &[u8]) -> Result<Document, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn load(path: impl AsRef<std::path::Path>) -> Result<Document, String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn save(doc: &Document, path: impl AsRef<std::path::Path>) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Markdown` is never constructed
[INFO] [stdout]  --> src/format/markdown.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Markdown;
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `to_markdown` and `from_markdown` are never used
[INFO] [stdout]   --> src/format/markdown.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Markdown {
[INFO] [stdout]    | ------------- associated functions in this implementation
[INFO] [stdout]  8 |     /// Convert a Folio Document to Markdown text
[INFO] [stdout]  9 |     pub fn to_markdown(doc: &Document) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn from_markdown(text: &str, title: &str) -> Document {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `heading_level` is never used
[INFO] [stdout]   --> src/format/markdown.rs:87:4
[INFO] [stdout]    |
[INFO] [stdout] 87 | fn heading_level(line: &str) -> Option<u8> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inlines_to_text` is never used
[INFO] [stdout]    --> src/format/markdown.rs:102:4
[INFO] [stdout]     |
[INFO] [stdout] 102 | fn inlines_to_text(inlines: &[InlineElement]) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_connected` is never used
[INFO] [stdout]   --> src/storage/db.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Database {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn is_connected(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `font_size` is never read
[INFO] [stdout]   --> src/ui/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct UIState {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub font_size: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UIState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Settings` and `ExportDocx` are never constructed
[INFO] [stdout]   --> src/ui/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum DialogType {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 31 |     Settings,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     ExportDocx,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DialogType` 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 `render` is never used
[INFO] [stdout]   --> src/ui/mod.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl UIState {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 38 |     pub fn render(&mut self, ctx: &egui::Context, app: &mut FolioApp) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `upstream` is never read
[INFO] [stdout]  --> src/vcs/branch.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Branch {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 7 |     pub upstream: Option<String>,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Branch` 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 `new` is never used
[INFO] [stdout]   --> src/vcs/commit.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Signature {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new(name: impl Into<String>, email: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DiffEntry` is never used
[INFO] [stdout]  --> src/vcs/diff.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum DiffEntry {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Change` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum Change {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `diff` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn diff(old: &Document, new: &Document) -> Vec<DiffEntry> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `flatten_blocks` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn flatten_blocks(doc: &Document) -> Vec<&Block> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blocks_equal` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn blocks_equal(a: &&Block, b: &&Block) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inline_elements_equal` is never used
[INFO] [stdout]   --> src/vcs/diff.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn inline_elements_equal(a: &[InlineElement], b: &[InlineElement]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]   --> src/vcs/log.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl LogEntry {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Conflict` is never used
[INFO] [stdout]  --> src/vcs/merge.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum Conflict {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DeleteAction` is never used
[INFO] [stdout]   --> src/vcs/merge.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum DeleteAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Side` is never used
[INFO] [stdout]   --> src/vcs/merge.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum Side {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MergeResult` is never constructed
[INFO] [stdout]   --> src/vcs/merge.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct MergeResult {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge` is never used
[INFO] [stdout]   --> src/vcs/merge.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn merge(
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_change` is never used
[INFO] [stdout]   --> src/vcs/merge.rs:80:4
[INFO] [stdout]    |
[INFO] [stdout] 80 | fn apply_change(doc: &mut Document, change: &DiffEntry) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_conflict` is never used
[INFO] [stdout]    --> src/vcs/merge.rs:102:4
[INFO] [stdout]     |
[INFO] [stdout] 102 | fn check_conflict(source_changes: &[DiffEntry], index: &usize) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_hex` is never used
[INFO] [stdout]   --> src/vcs/object.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Hash {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn as_hex(&self) -> String {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Object` is never used
[INFO] [stdout]   --> src/vcs/object.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum Object {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Blob` is never constructed
[INFO] [stdout]   --> src/vcs/object.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct Blob {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommitData` is never constructed
[INFO] [stdout]   --> src/vcs/object.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct CommitData {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_storage`, `current_branch`, and `checkout` are never used
[INFO] [stdout]    --> src/vcs/repository.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl Repository {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn with_storage(mut self, storage: VcsStorage) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn current_branch(&self) -> Option<&Branch> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn checkout(&mut self, commit_hash: Hash) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_blob`, `get_tree`, `get_commit`, and `get_ref` are never used
[INFO] [stdout]   --> src/vcs/storage.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl VcsStorage {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn get_blob(&self, hash: Hash) -> Result<Option<Vec<u8>>, String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn get_tree(&self, hash: Hash) -> Result<Option<Tree>, String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_commit(&self, hash: Hash) -> Result<Option<Commit>, String> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn get_ref(&self, name: &str) -> Result<Option<Hash>, String> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 30s
[INFO] running `Command { std: "docker" "inspect" "9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151", kill_on_drop: false }`
[INFO] [stdout] 9476d4f5c7511bf32c7e017e103bc1f16bf6865e43efe159a1bd5c943c637151
