[INFO] cloning repository https://github.com/bezaleel22/webpdf
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bezaleel22/webpdf" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbezaleel22%2Fwebpdf", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbezaleel22%2Fwebpdf'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2b8b84aab1c7d8a79c43657a83237b40648a7513
[INFO] checking bezaleel22/webpdf/2b8b84aab1c7d8a79c43657a83237b40648a7513 against master#c9af9c1dc85a55e309345030ff9cb7ea247953fa for pr-151146
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbezaleel22%2Fwebpdf" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/bezaleel22/webpdf
[INFO] finished tweaking git repo https://github.com/bezaleel22/webpdf
[INFO] tweaked toml for git repo https://github.com/bezaleel22/webpdf written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/bezaleel22/webpdf on toolchain c9af9c1dc85a55e309345030ff9cb7ea247953fa
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c9af9c1dc85a55e309345030ff9cb7ea247953fa" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/bezaleel22/webpdf 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" "+c9af9c1dc85a55e309345030ff9cb7ea247953fa" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded unicode-ccc v0.4.0
[INFO] [stderr]   Downloaded peniko v0.4.0
[INFO] [stderr]   Downloaded unicode-bidi-mirroring v0.4.0
[INFO] [stderr]   Downloaded imagesize v0.13.0
[INFO] [stderr]   Downloaded subsetter v0.2.2
[INFO] [stderr]   Downloaded xmp-writer v0.3.2
[INFO] [stderr]   Downloaded xml5ever v0.35.0
[INFO] [stderr]   Downloaded kurbo v0.11.3
[INFO] [stderr]   Downloaded objc2-core-text v0.3.1
[INFO] [stderr]   Downloaded krilla v0.4.0
[INFO] [stderr]   Downloaded taffy v0.8.3
[INFO] [stderr]   Downloaded parley v0.5.0
[INFO] [stderr]   Downloaded fontconfig-cache-parser v0.2.0
[INFO] [stderr]   Downloaded fontique v0.5.0
[INFO] [stderr]   Downloaded markup5ever_rcdom v0.35.0+unofficial
[INFO] [stderr]   Downloaded rustybuzz v0.20.1
[INFO] [stderr]   Downloaded color v0.3.1
[INFO] [stderr]   Downloaded grid v0.17.0
[INFO] [stderr]   Downloaded read-fonts v0.28.0
[INFO] [stderr]   Downloaded core_maths v0.1.0
[INFO] [stderr]   Downloaded font-types v0.8.4
[INFO] [stderr]   Downloaded read-fonts v0.29.3
[INFO] [stderr]   Downloaded jiff v0.2.1
[INFO] [stderr]   Downloaded pdf-writer v0.13.0
[INFO] [stderr]   Downloaded skrifa v0.30.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+c9af9c1dc85a55e309345030ff9cb7ea247953fa" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4dc98fc661226ca5cc08b87781cd7f6a7bbfec1dacb0993c9aa8d5e58711b0cd
[INFO] running `Command { std: "docker" "start" "-a" "4dc98fc661226ca5cc08b87781cd7f6a7bbfec1dacb0993c9aa8d5e58711b0cd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4dc98fc661226ca5cc08b87781cd7f6a7bbfec1dacb0993c9aa8d5e58711b0cd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4dc98fc661226ca5cc08b87781cd7f6a7bbfec1dacb0993c9aa8d5e58711b0cd", kill_on_drop: false }`
[INFO] [stdout] 4dc98fc661226ca5cc08b87781cd7f6a7bbfec1dacb0993c9aa8d5e58711b0cd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+c9af9c1dc85a55e309345030ff9cb7ea247953fa" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 52d8e8c77934ac46f8f5668e34515bad2719f2ee603cc1bf1937a86a4423aa16
[INFO] running `Command { std: "docker" "start" "-a" "52d8e8c77934ac46f8f5668e34515bad2719f2ee603cc1bf1937a86a4423aa16", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.92
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]     Checking phf_shared v0.11.2
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]    Compiling libm v0.2.11
[INFO] [stderr]     Checking foldhash v0.1.3
[INFO] [stderr]     Checking block-padding v0.3.3
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking kurbo v0.11.3
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking slab v0.4.10
[INFO] [stderr]     Checking color v0.3.1
[INFO] [stderr]     Checking litemap v0.7.4
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking hashbrown v0.15.4
[INFO] [stderr]     Checking dtoa v1.0.9
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]    Compiling selectors v0.31.0
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking dtoa-short v0.3.5
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking unicode-bidi-mirroring v0.4.0
[INFO] [stderr]     Checking roxmltree v0.20.0
[INFO] [stderr]     Checking pom v1.1.0
[INFO] [stderr]     Checking bytecount v0.6.9
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking unicode-ccc v0.4.0
[INFO] [stderr]    Compiling quote v1.0.37
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]     Checking unicode-script v0.5.7
[INFO] [stderr]     Checking zune-jpeg v0.4.14
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking peniko v0.4.0
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]     Checking core_maths v0.1.0
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking clap_builder v4.5.42
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking pdf-writer v0.13.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking cbc v0.1.2
[INFO] [stderr]    Compiling syn v2.0.90
[INFO] [stderr]    Compiling string_cache_codegen v0.5.4
[INFO] [stderr]     Checking ecb v0.1.2
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking stringprep v0.1.5
[INFO] [stderr]     Checking image-webp v0.2.3
[INFO] [stderr]     Checking time v0.3.41
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking memmap2 v0.9.5
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]    Compiling web_atoms v0.1.3
[INFO] [stderr]     Checking subsetter v0.2.2
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking xmp-writer v0.3.2
[INFO] [stderr]     Checking grid v0.17.0
[INFO] [stderr]     Checking bumpalo v3.16.0
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking jiff v0.2.1
[INFO] [stderr]     Checking imagesize v0.13.0
[INFO] [stderr]     Checking rangemap v1.6.0
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking clap v4.5.42
[INFO] [stderr]     Checking rustix v1.0.8
[INFO] [stderr]     Checking taffy v0.8.3
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking adobe-cmap-parser v0.4.1
[INFO] [stderr]     Checking type1-encoding-parser v0.1.0
[INFO] [stderr]     Checking euclid v0.20.14
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]     Checking cff-parser v0.1.0
[INFO] [stderr]     Checking postscript v0.14.1
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking nom_locate v5.0.0
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]    Compiling bytemuck_derive v1.8.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling phf_macros v0.11.2
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling cssparser-macros v0.6.1
[INFO] [stderr]    Compiling match_token v0.35.0
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling zerofrom-derive v0.1.5
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking phf v0.11.2
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking cssparser v0.35.0
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking derive_more v2.0.1
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking thiserror v2.0.12
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking font-types v0.9.0
[INFO] [stderr]     Checking font-types v0.8.4
[INFO] [stderr]     Checking fontconfig-cache-parser v0.2.0
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking rustybuzz v0.20.1
[INFO] [stderr]     Checking zerofrom v0.1.5
[INFO] [stderr]     Checking ppv-lite86 v0.2.20
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking read-fonts v0.28.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking read-fonts v0.29.3
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking lopdf v0.36.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking pdf-extract v0.9.0
[INFO] [stderr]     Checking string_cache v0.8.9
[INFO] [stderr]     Checking serde_json v1.0.142
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking skrifa v0.31.3
[INFO] [stderr]     Checking fontique v0.5.0
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking markup5ever v0.35.0
[INFO] [stderr]     Checking skrifa v0.30.0
[INFO] [stderr]     Checking xml5ever v0.35.0
[INFO] [stderr]     Checking html5ever v0.35.0
[INFO] [stderr]     Checking markup5ever_rcdom v0.35.0+unofficial
[INFO] [stderr]     Checking krilla v0.4.0
[INFO] [stderr]     Checking swash v0.2.5
[INFO] [stderr]     Checking parley v0.5.0
[INFO] [stderr]     Checking webpdf v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/utils/error.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fmt;
[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: `std::collections::HashMap`
[INFO] [stdout]  --> src/utils/config.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/utils/cache.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::utils::{WebPdfError, WebPdfResult};
[INFO] [stdout]   |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `WebPdfError` and `WebPdfResult`
[INFO] [stdout]  --> src/utils/diagnostics.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{WebPdfError, WebPdfResult};
[INFO] [stdout]   |                    ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RecoveryStrategy`
[INFO] [stdout]  --> src/parser/html.rs:7:77
[INFO] [stdout]   |
[INFO] [stdout] 7 | use super::{DocumentFragment, DocumentMetadata, ParseError, ParsedDocument, RecoveryStrategy};
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/parser/html.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `WebPdfError` and `WebPdfResult`
[INFO] [stdout]   --> src/parser/mod.rs:33:20
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::utils::{WebPdfError, WebPdfResult};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/style/cascade.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::utils::{WebPdfError, WebPdfResult, config::StyleConfig};
[INFO] [stdout]   |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CascadedRule`
[INFO] [stdout]  --> src/style/computed.rs:7:70
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::style::{ElementId, StyleContext, cascade::{CascadeResult, CascadedRule}};
[INFO] [stdout]   |                                                                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/style/tree.rs:11:41
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::utils::{config::StyleConfig, WebPdfError, WebPdfResult};
[INFO] [stdout]    |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CssRule`
[INFO] [stdout]   --> src/style/mod.rs:32:49
[INFO] [stdout]    |
[INFO] [stdout] 32 | use crate::parser::{ParsedDocument, Stylesheet, CssRule, Declaration};
[INFO] [stdout]    |                                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `markup5ever_rcdom::Handle`
[INFO] [stdout]   --> src/style/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use markup5ever_rcdom::Handle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ComputedStyle`
[INFO] [stdout]   --> src/layout/mod.rs:46:38
[INFO] [stdout]    |
[INFO] [stdout] 46 | use crate::style::{ComputedStyleSet, ComputedStyle, ElementId};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/layout/mod.rs:47:20
[INFO] [stdout]    |
[INFO] [stdout] 47 | use crate::utils::{WebPdfError, WebPdfResult, cache::LruCache, config::LayoutConfig};
[INFO] [stdout]    |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RcDom`
[INFO] [stdout]   --> src/layout/engine.rs:12:43
[INFO] [stdout]    |
[INFO] [stdout] 12 | use markup5ever_rcdom::{Handle, NodeData, RcDom};
[INFO] [stdout]    |                                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/layout/text.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::utils::{WebPdfError, WebPdfResult, config::LayoutConfig};
[INFO] [stdout]   |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ElementInfo`
[INFO] [stdout]  --> src/layout/box_model.rs:7:42
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::style::computed::{LengthUnit, ElementInfo};
[INFO] [stdout]   |                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LayoutNodeContext`
[INFO] [stdout]   --> src/render/pdf.rs:15:21
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::layout::{LayoutNodeContext, LayoutNodeType, LayoutTree};
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LinearGradient`, `SpreadMethod`, and `Stop`
[INFO] [stdout]   --> src/render/pdf.rs:21:37
[INFO] [stdout]    |
[INFO] [stdout] 21 | use krilla::paint::{Fill, FillRule, LinearGradient, SpreadMethod, Stop};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GlyphId` and `KrillaGlyph`
[INFO] [stdout]   --> src/render/pdf.rs:23:26
[INFO] [stdout]    |
[INFO] [stdout] 23 | use krilla::text::{Font, GlyphId, KrillaGlyph, TextDirection};
[INFO] [stdout]    |                          ^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Layout`
[INFO] [stdout]   --> src/render/pdf.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 | use taffy::{Layout, NodeId, Size as TaffySize};
[INFO] [stdout]    |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Fill` and `Transform`
[INFO] [stdout]  --> src/render/graphics/paths.rs:5:31
[INFO] [stdout]   |
[INFO] [stdout] 5 | use super::{GraphicsRenderer, Fill, Stroke, Rectangle, Transform};
[INFO] [stdout]   |                               ^^^^                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathBuilder` and `Rect`
[INFO] [stdout]   --> src/render/graphics/mod.rs:12:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | use krilla::geom::{PathBuilder, Point, Rect};
[INFO] [stdout]    |                    ^^^^^^^^^^^         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `krilla::surface::Surface`
[INFO] [stdout]   --> src/render/graphics/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use krilla::surface::Surface;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]   --> src/render/graphics/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::fmt;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/render/text/measurement.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::utils::error::{WebPdfError, WebPdfResult};
[INFO] [stdout]   |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/render/text/glyphs.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::error::{WebPdfError, WebPdfResult};
[INFO] [stdout]   |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::layout::LayoutNodeContext`
[INFO] [stdout]   --> src/render/text/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::layout::LayoutNodeContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ElementInfo`
[INFO] [stdout]   --> src/render/text/mod.rs:11:60
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::style::computed::{ComputedStyle, PropertyValue, ElementInfo};
[INFO] [stdout]    |                                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/render/text/mod.rs:12:27
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::utils::error::{WebPdfError, WebPdfResult};
[INFO] [stdout]    |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/render/text/mod.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LayoutNodeContext` and `LayoutNodeType`
[INFO] [stdout]   --> src/render/mod.rs:10:33
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::layout::{LayoutTree, LayoutNodeContext, LayoutNodeType};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ComputedStyle`
[INFO] [stdout]   --> src/render/mod.rs:11:38
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::style::{ComputedStyleSet, ComputedStyle};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/render/mod.rs:12:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::utils::{WebPdfError, WebPdfResult, config::RenderConfig};
[INFO] [stdout]    |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Config` and `WebPdfError`
[INFO] [stdout]   --> src/document/context.rs:37:20
[INFO] [stdout]    |
[INFO] [stdout] 37 | use crate::utils::{WebPdfError, WebPdfResult, Config, cache::LruCache};
[INFO] [stdout]    |                    ^^^^^^^^^^^                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PipelineConfig`
[INFO] [stdout]   --> src/document/api.rs:46:51
[INFO] [stdout]    |
[INFO] [stdout] 46 | use crate::document::pipeline::{DocumentPipeline, PipelineConfig, PipelineMetrics};
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ParsedDocument` and `Stylesheet`
[INFO] [stdout]   --> src/document/mod.rs:98:21
[INFO] [stdout]    |
[INFO] [stdout] 98 | use crate::parser::{ParsedDocument, Stylesheet};
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ComputedStyleSet` and `StyleTree`
[INFO] [stdout]   --> src/document/mod.rs:99:20
[INFO] [stdout]    |
[INFO] [stdout] 99 | use crate::style::{ComputedStyleSet, StyleTree};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LayoutTree` and `Viewport`
[INFO] [stdout]    --> src/document/mod.rs:100:21
[INFO] [stdout]     |
[INFO] [stdout] 100 | use crate::layout::{LayoutTree, Viewport};
[INFO] [stdout]     |                     ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::PdfDocument`
[INFO] [stdout]    --> src/document/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 | use crate::render::PdfDocument;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Margins`
[INFO] [stdout]   --> src/legacy_compat/core.rs:25:45
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::document::api::{DocumentBuilder, Margins};
[INFO] [stdout]    |                                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::layout::Viewport`
[INFO] [stdout]   --> src/legacy_compat/core.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::layout::Viewport;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DocumentConfig` and `DocumentProcessor`
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:28:45
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::document::api::{DocumentBuilder, DocumentProcessor, DocumentConfig, Margins};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Config`
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:30:47
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::utils::{WebPdfError, WebPdfResult, Config, validate_string_input, clamp};
[INFO] [stdout]    |                                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_text_brush_from_css`
[INFO] [stdout]   --> src/legacy_compat/text.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     create_text_brush_from_css,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::style::computed::ComputedStyle`
[INFO] [stdout]   --> src/legacy_compat/text.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::style::computed::ComputedStyle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/legacy_compat/text.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::utils::{WebPdfError, WebPdfResult, clamp};
[INFO] [stdout]    |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]   --> src/legacy_compat/text.rs:30:17
[INFO] [stdout]    |
[INFO] [stdout] 30 | use std::sync::{Arc, Mutex, OnceLock};
[INFO] [stdout]    |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `krilla::image::Image`
[INFO] [stdout]   --> src/prototype/pdf_renderer.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use krilla::image::Image;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]  --> src/utils/error.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fmt;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: duplicated attribute
[INFO] [stdout]    --> src/utils/error.rs:465:5
[INFO] [stdout]     |
[INFO] [stdout] 465 |     #[test]
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(duplicate_macro_attributes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/utils/config.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/utils/cache.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::utils::{WebPdfError, WebPdfResult};
[INFO] [stdout]   |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `WebPdfError` and `WebPdfResult`
[INFO] [stdout]  --> src/utils/diagnostics.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{WebPdfError, WebPdfResult};
[INFO] [stdout]   |                    ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RecoveryStrategy`
[INFO] [stdout]  --> src/parser/html.rs:7:77
[INFO] [stdout]   |
[INFO] [stdout] 7 | use super::{DocumentFragment, DocumentMetadata, ParseError, ParsedDocument, RecoveryStrategy};
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/parser/html.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `WebPdfError` and `WebPdfResult`
[INFO] [stdout]   --> src/parser/mod.rs:33:20
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::utils::{WebPdfError, WebPdfResult};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/style/cascade.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::utils::{WebPdfError, WebPdfResult, config::StyleConfig};
[INFO] [stdout]   |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CssRule`, `Declaration`, and `Stylesheet`
[INFO] [stdout]    --> src/style/cascade.rs:510:25
[INFO] [stdout]     |
[INFO] [stdout] 510 |     use crate::parser::{Stylesheet, CssRule, Declaration};
[INFO] [stdout]     |                         ^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CascadedRule`
[INFO] [stdout]  --> src/style/computed.rs:7:70
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::style::{ElementId, StyleContext, cascade::{CascadeResult, CascadedRule}};
[INFO] [stdout]   |                                                                      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/style/tree.rs:11:41
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::utils::{config::StyleConfig, WebPdfError, WebPdfResult};
[INFO] [stdout]    |                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::style::computed::ComputedStyleSet`
[INFO] [stdout]    --> src/style/tree.rs:598:9
[INFO] [stdout]     |
[INFO] [stdout] 598 |     use crate::style::computed::ComputedStyleSet;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CssRule`
[INFO] [stdout]   --> src/style/mod.rs:32:49
[INFO] [stdout]    |
[INFO] [stdout] 32 | use crate::parser::{ParsedDocument, Stylesheet, CssRule, Declaration};
[INFO] [stdout]    |                                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `markup5ever_rcdom::Handle`
[INFO] [stdout]   --> src/style/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use markup5ever_rcdom::Handle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ComputedStyle`
[INFO] [stdout]   --> src/layout/mod.rs:46:38
[INFO] [stdout]    |
[INFO] [stdout] 46 | use crate::style::{ComputedStyleSet, ComputedStyle, ElementId};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/layout/mod.rs:47:20
[INFO] [stdout]    |
[INFO] [stdout] 47 | use crate::utils::{WebPdfError, WebPdfResult, cache::LruCache, config::LayoutConfig};
[INFO] [stdout]    |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RcDom`
[INFO] [stdout]   --> src/layout/engine.rs:12:43
[INFO] [stdout]    |
[INFO] [stdout] 12 | use markup5ever_rcdom::{Handle, NodeData, RcDom};
[INFO] [stdout]    |                                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/layout/text.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::utils::{WebPdfError, WebPdfResult, config::LayoutConfig};
[INFO] [stdout]   |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ElementInfo`
[INFO] [stdout]  --> src/layout/box_model.rs:7:42
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::style::computed::{LengthUnit, ElementInfo};
[INFO] [stdout]   |                                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LayoutNodeContext`
[INFO] [stdout]   --> src/render/pdf.rs:15:21
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::layout::{LayoutNodeContext, LayoutNodeType, LayoutTree};
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LinearGradient`, `SpreadMethod`, and `Stop`
[INFO] [stdout]   --> src/render/pdf.rs:21:37
[INFO] [stdout]    |
[INFO] [stdout] 21 | use krilla::paint::{Fill, FillRule, LinearGradient, SpreadMethod, Stop};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GlyphId` and `KrillaGlyph`
[INFO] [stdout]   --> src/render/pdf.rs:23:26
[INFO] [stdout]    |
[INFO] [stdout] 23 | use krilla::text::{Font, GlyphId, KrillaGlyph, TextDirection};
[INFO] [stdout]    |                          ^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Layout`
[INFO] [stdout]   --> src/render/pdf.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 | use taffy::{Layout, NodeId, Size as TaffySize};
[INFO] [stdout]    |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Fill` and `Transform`
[INFO] [stdout]  --> src/render/graphics/paths.rs:5:31
[INFO] [stdout]   |
[INFO] [stdout] 5 | use super::{GraphicsRenderer, Fill, Stroke, Rectangle, Transform};
[INFO] [stdout]   |                               ^^^^                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathBuilder` and `Rect`
[INFO] [stdout]   --> src/render/graphics/mod.rs:12:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | use krilla::geom::{PathBuilder, Point, Rect};
[INFO] [stdout]    |                    ^^^^^^^^^^^         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `krilla::surface::Surface`
[INFO] [stdout]   --> src/render/graphics/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use krilla::surface::Surface;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt`
[INFO] [stdout]   --> src/render/graphics/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::fmt;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/render/text/measurement.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::utils::error::{WebPdfError, WebPdfResult};
[INFO] [stdout]   |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]  --> src/render/text/glyphs.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::error::{WebPdfError, WebPdfResult};
[INFO] [stdout]   |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::layout::LayoutNodeContext`
[INFO] [stdout]   --> src/render/text/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::layout::LayoutNodeContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/render/text/mod.rs:12:27
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::utils::error::{WebPdfError, WebPdfResult};
[INFO] [stdout]    |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LayoutNodeContext` and `LayoutNodeType`
[INFO] [stdout]   --> src/render/mod.rs:10:33
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::layout::{LayoutTree, LayoutNodeContext, LayoutNodeType};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ComputedStyle`
[INFO] [stdout]   --> src/render/mod.rs:11:38
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::style::{ComputedStyleSet, ComputedStyle};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/render/mod.rs:12:20
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::utils::{WebPdfError, WebPdfResult, config::RenderConfig};
[INFO] [stdout]    |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Config` and `WebPdfError`
[INFO] [stdout]   --> src/document/context.rs:37:20
[INFO] [stdout]    |
[INFO] [stdout] 37 | use crate::utils::{WebPdfError, WebPdfResult, Config, cache::LruCache};
[INFO] [stdout]    |                    ^^^^^^^^^^^                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PipelineConfig`
[INFO] [stdout]   --> src/document/api.rs:46:51
[INFO] [stdout]    |
[INFO] [stdout] 46 | use crate::document::pipeline::{DocumentPipeline, PipelineConfig, PipelineMetrics};
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ParsedDocument` and `Stylesheet`
[INFO] [stdout]   --> src/document/mod.rs:98:21
[INFO] [stdout]    |
[INFO] [stdout] 98 | use crate::parser::{ParsedDocument, Stylesheet};
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ComputedStyleSet` and `StyleTree`
[INFO] [stdout]   --> src/document/mod.rs:99:20
[INFO] [stdout]    |
[INFO] [stdout] 99 | use crate::style::{ComputedStyleSet, StyleTree};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LayoutTree` and `Viewport`
[INFO] [stdout]    --> src/document/mod.rs:100:21
[INFO] [stdout]     |
[INFO] [stdout] 100 | use crate::layout::{LayoutTree, Viewport};
[INFO] [stdout]     |                     ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::PdfDocument`
[INFO] [stdout]    --> src/document/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 | use crate::render::PdfDocument;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Margins`
[INFO] [stdout]   --> src/legacy_compat/core.rs:25:45
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::document::api::{DocumentBuilder, Margins};
[INFO] [stdout]    |                                             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::layout::Viewport`
[INFO] [stdout]   --> src/legacy_compat/core.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::layout::Viewport;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DocumentConfig` and `DocumentProcessor`
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:28:45
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::document::api::{DocumentBuilder, DocumentProcessor, DocumentConfig, Margins};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Config`
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:30:47
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::utils::{WebPdfError, WebPdfResult, Config, validate_string_input, clamp};
[INFO] [stdout]    |                                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::path::PathBuf;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_text_brush_from_css`
[INFO] [stdout]   --> src/legacy_compat/text.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     create_text_brush_from_css,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::style::computed::ComputedStyle`
[INFO] [stdout]   --> src/legacy_compat/text.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::style::computed::ComputedStyle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfError`
[INFO] [stdout]   --> src/legacy_compat/text.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::utils::{WebPdfError, WebPdfResult, clamp};
[INFO] [stdout]    |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]   --> src/legacy_compat/text.rs:30:17
[INFO] [stdout]    |
[INFO] [stdout] 30 | use std::sync::{Arc, Mutex, OnceLock};
[INFO] [stdout]    |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `krilla::image::Image`
[INFO] [stdout]   --> src/prototype/pdf_renderer.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use krilla::image::Image;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::Document`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:43:16
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use core::{Document, Pipeline, LegacyConfig};
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::Pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use core::{Document, Pipeline, LegacyConfig};
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `legacy_compat::core::LegacyConfig`: Use Config directly instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:43:36
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use core::{Document, Pipeline, LegacyConfig};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:44:20
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub use embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocumentBuilder`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:44:38
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub use embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `legacy_compat::embedded::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]   --> src/legacy_compat/mod.rs:44:63
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub use embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel};
[INFO] [stdout]    |                                                               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:45:16
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use text::{FontManager as LegacyFontManager, Typography, TextLayout as LegacyTextLayout};
[INFO] [stdout]    |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:45:50
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use text::{FontManager as LegacyFontManager, Typography, TextLayout as LegacyTextLayout};
[INFO] [stdout]    |                                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::TextLayout`: Text layout is handled automatically in the new system
[INFO] [stdout]   --> src/legacy_compat/mod.rs:45:62
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use text::{FontManager as LegacyFontManager, Typography, TextLayout as LegacyTextLayout};
[INFO] [stdout]    |                                                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::Document`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:41:6
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl Document {
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::Pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:117:6
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl Pipeline {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::LegacyConfigBuilder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:165:6
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl LegacyConfigBuilder {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:51:6
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl EmbeddedDocument {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocumentBuilder`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:197:6
[INFO] [stdout]     |
[INFO] [stdout] 197 | impl EmbeddedDocumentBuilder {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `legacy_compat::embedded::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:353:16
[INFO] [stdout]     |
[INFO] [stdout] 353 |     pub level: ValidationLevel,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationIssue`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:390:21
[INFO] [stdout]     |
[INFO] [stdout] 390 |     pub issues: Vec<ValidationIssue>,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationResult`: Use document processing metrics instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:96:44
[INFO] [stdout]    |
[INFO] [stdout] 96 |     pub fn validate(&self) -> WebPdfResult<ValidationResult> {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationIssue`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:102:25
[INFO] [stdout]     |
[INFO] [stdout] 102 |             issues.push(ValidationIssue {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationIssue`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:112:25
[INFO] [stdout]     |
[INFO] [stdout] 112 |             issues.push(ValidationIssue {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationIssue`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:123:29
[INFO] [stdout]     |
[INFO] [stdout] 123 |                 issues.push(ValidationIssue {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationResult`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 |         Ok(ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::DocumentMetadata`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:142:31
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn metadata(&self) -> DocumentMetadata {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::DocumentMetadata`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:143:9
[INFO] [stdout]     |
[INFO] [stdout] 143 |         DocumentMetadata {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `legacy_compat::embedded::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:177:45
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn set_validation(&mut self, level: ValidationLevel) {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `legacy_compat::embedded::ValidationLevel::Strict`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:279:30
[INFO] [stdout]     |
[INFO] [stdout] 279 |             ValidationLevel::Strict
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `legacy_compat::embedded::ValidationLevel::None`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:281:30
[INFO] [stdout]     |
[INFO] [stdout] 281 |             ValidationLevel::None
[INFO] [stdout]     |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `legacy_compat::embedded::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:290:46
[INFO] [stdout]     |
[INFO] [stdout] 290 |     pub fn validation_level(mut self, level: ValidationLevel) -> Self {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:299:40
[INFO] [stdout]     |
[INFO] [stdout] 299 |     pub fn build(self) -> WebPdfResult<EmbeddedDocument> {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:311:12
[INFO] [stdout]     |
[INFO] [stdout] 311 |         Ok(EmbeddedDocument {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `legacy_compat::embedded::ValidationLevel::Basic`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:361:37
[INFO] [stdout]     |
[INFO] [stdout] 361 |             level: ValidationLevel::Basic,
[INFO] [stdout]     |                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:45:6
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl FontManager {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:142:6
[INFO] [stdout]     |
[INFO] [stdout] 142 | impl Typography {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:213:18
[INFO] [stdout]     |
[INFO] [stdout] 213 | impl Default for Typography {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:237:21
[INFO] [stdout]     |
[INFO] [stdout] 237 |     pub typography: Typography,
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::TextLayout`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:244:6
[INFO] [stdout]     |
[INFO] [stdout] 244 | impl TextLayout {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:481:21
[INFO] [stdout]     |
[INFO] [stdout] 481 |     pub typography: Typography,
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::TextStyle`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:484:6
[INFO] [stdout]     |
[INFO] [stdout] 484 | impl TextStyle {
[INFO] [stdout]     |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::TextStyle`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:505:18
[INFO] [stdout]     |
[INFO] [stdout] 505 | impl Default for TextStyle {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:515:52
[INFO] [stdout]     |
[INFO] [stdout] 515 | pub fn get_global_font_manager() -> &'static Mutex<FontManager> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:518:20
[INFO] [stdout]     |
[INFO] [stdout] 518 |         Mutex::new(FontManager::new().expect("Failed to create legacy font manager"))
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:516:48
[INFO] [stdout]     |
[INFO] [stdout] 516 |     static LEGACY_FONT_MANAGER: OnceLock<Mutex<FontManager>> = OnceLock::new();
[INFO] [stdout]     |                                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:249:46
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub fn new(content: &str, font_manager: &FontManager) -> WebPdfResult<Self> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:252:25
[INFO] [stdout]     |
[INFO] [stdout] 252 |             typography: Typography::default(),
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:262:45
[INFO] [stdout]     |
[INFO] [stdout] 262 |     pub fn typography(mut self, typography: Typography) -> Self {
[INFO] [stdout]     |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |             typography: Typography::default(),
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:499:45
[INFO] [stdout]     |
[INFO] [stdout] 499 |     pub fn typography(mut self, typography: Typography) -> Self {
[INFO] [stdout]     |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::Document`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:43:16
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use core::{Document, Pipeline, LegacyConfig};
[INFO] [stdout]    |                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::Pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use core::{Document, Pipeline, LegacyConfig};
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `legacy_compat::core::LegacyConfig`: Use Config directly instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:43:36
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use core::{Document, Pipeline, LegacyConfig};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:44:20
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub use embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocumentBuilder`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:44:38
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub use embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `legacy_compat::embedded::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]   --> src/legacy_compat/mod.rs:44:63
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub use embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel};
[INFO] [stdout]    |                                                               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:45:16
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use text::{FontManager as LegacyFontManager, Typography, TextLayout as LegacyTextLayout};
[INFO] [stdout]    |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:45:50
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use text::{FontManager as LegacyFontManager, Typography, TextLayout as LegacyTextLayout};
[INFO] [stdout]    |                                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::TextLayout`: Text layout is handled automatically in the new system
[INFO] [stdout]   --> src/legacy_compat/mod.rs:45:62
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use text::{FontManager as LegacyFontManager, Typography, TextLayout as LegacyTextLayout};
[INFO] [stdout]    |                                                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::Document`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:41:6
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl Document {
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::Pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:117:6
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl Pipeline {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::core::LegacyConfigBuilder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:165:6
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl LegacyConfigBuilder {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:51:6
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl EmbeddedDocument {
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocumentBuilder`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:197:6
[INFO] [stdout]     |
[INFO] [stdout] 197 | impl EmbeddedDocumentBuilder {
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `legacy_compat::embedded::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:353:16
[INFO] [stdout]     |
[INFO] [stdout] 353 |     pub level: ValidationLevel,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationIssue`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:390:21
[INFO] [stdout]     |
[INFO] [stdout] 390 |     pub issues: Vec<ValidationIssue>,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationResult`: Use document processing metrics instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:96:44
[INFO] [stdout]    |
[INFO] [stdout] 96 |     pub fn validate(&self) -> WebPdfResult<ValidationResult> {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationIssue`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:102:25
[INFO] [stdout]     |
[INFO] [stdout] 102 |             issues.push(ValidationIssue {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationIssue`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:112:25
[INFO] [stdout]     |
[INFO] [stdout] 112 |             issues.push(ValidationIssue {
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationIssue`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:123:29
[INFO] [stdout]     |
[INFO] [stdout] 123 |                 issues.push(ValidationIssue {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::ValidationResult`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 |         Ok(ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::DocumentMetadata`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:142:31
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn metadata(&self) -> DocumentMetadata {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::DocumentMetadata`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:143:9
[INFO] [stdout]     |
[INFO] [stdout] 143 |         DocumentMetadata {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `legacy_compat::embedded::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:177:45
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn set_validation(&mut self, level: ValidationLevel) {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `legacy_compat::embedded::ValidationLevel::Strict`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:279:30
[INFO] [stdout]     |
[INFO] [stdout] 279 |             ValidationLevel::Strict
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `legacy_compat::embedded::ValidationLevel::None`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:281:30
[INFO] [stdout]     |
[INFO] [stdout] 281 |             ValidationLevel::None
[INFO] [stdout]     |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `legacy_compat::embedded::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:290:46
[INFO] [stdout]     |
[INFO] [stdout] 290 |     pub fn validation_level(mut self, level: ValidationLevel) -> Self {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:299:40
[INFO] [stdout]     |
[INFO] [stdout] 299 |     pub fn build(self) -> WebPdfResult<EmbeddedDocument> {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::embedded::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:311:12
[INFO] [stdout]     |
[INFO] [stdout] 311 |         Ok(EmbeddedDocument {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated unit variant `legacy_compat::embedded::ValidationLevel::Basic`: Validation is always enabled in the new architecture
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:361:37
[INFO] [stdout]     |
[INFO] [stdout] 361 |             level: ValidationLevel::Basic,
[INFO] [stdout]     |                                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:45:6
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl FontManager {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:142:6
[INFO] [stdout]     |
[INFO] [stdout] 142 | impl Typography {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:213:18
[INFO] [stdout]     |
[INFO] [stdout] 213 | impl Default for Typography {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:237:21
[INFO] [stdout]     |
[INFO] [stdout] 237 |     pub typography: Typography,
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::TextLayout`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:244:6
[INFO] [stdout]     |
[INFO] [stdout] 244 | impl TextLayout {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:481:21
[INFO] [stdout]     |
[INFO] [stdout] 481 |     pub typography: Typography,
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::TextStyle`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:484:6
[INFO] [stdout]     |
[INFO] [stdout] 484 | impl TextStyle {
[INFO] [stdout]     |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::TextStyle`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:505:18
[INFO] [stdout]     |
[INFO] [stdout] 505 | impl Default for TextStyle {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:515:52
[INFO] [stdout]     |
[INFO] [stdout] 515 | pub fn get_global_font_manager() -> &'static Mutex<FontManager> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:518:20
[INFO] [stdout]     |
[INFO] [stdout] 518 |         Mutex::new(FontManager::new().expect("Failed to create legacy font manager"))
[INFO] [stdout]     |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:516:48
[INFO] [stdout]     |
[INFO] [stdout] 516 |     static LEGACY_FONT_MANAGER: OnceLock<Mutex<FontManager>> = OnceLock::new();
[INFO] [stdout]     |                                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::FontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:249:46
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub fn new(content: &str, font_manager: &FontManager) -> WebPdfResult<Self> {
[INFO] [stdout]     |                                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:252:25
[INFO] [stdout]     |
[INFO] [stdout] 252 |             typography: Typography::default(),
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:262:45
[INFO] [stdout]     |
[INFO] [stdout] 262 |     pub fn typography(mut self, typography: Typography) -> Self {
[INFO] [stdout]     |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:491:25
[INFO] [stdout]     |
[INFO] [stdout] 491 |             typography: Typography::default(),
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `legacy_compat::text::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:499:45
[INFO] [stdout]     |
[INFO] [stdout] 499 |     pub fn typography(mut self, typography: Typography) -> Self {
[INFO] [stdout]     |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `legacy_compat::LegacyResult`: Use WebPdfResult directly
[INFO] [stdout]   --> src/legacy_compat/mod.rs:83:16
[INFO] [stdout]    |
[INFO] [stdout] 83 |         let _: LegacyResult<()> = Ok(());
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `legacy_compat::LegacyError`: Use WebPdfError directly
[INFO] [stdout]   --> src/legacy_compat/mod.rs:84:21
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let _error: LegacyError = WebPdfError::ConfigError {
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `legacy_compat::init_legacy_engine`: Use DocumentProcessor::new() instead
[INFO] [stdout]   --> src/legacy_compat/mod.rs:92:17
[INFO] [stdout]    |
[INFO] [stdout] 92 |         assert!(init_legacy_engine().is_ok());
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `legacy_compat::cleanup_legacy_engine`: No cleanup required in new engine
[INFO] [stdout]   --> src/legacy_compat/mod.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |         cleanup_legacy_engine(); // Should not panic
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:48:19
[INFO] [stdout]    |
[INFO] [stdout] 48 |         Ok(Self { processor })
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Ok(Self { processor })
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         self.processor.html_to_pdf(html)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |         self.processor.html_css_to_pdf(html, css)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |         self.processor.file_to_pdf(path)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |         self.processor.clear_cache();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Pipeline::pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:125:19
[INFO] [stdout]     |
[INFO] [stdout] 125 |         Ok(Self { pipeline })
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Pipeline::pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:134:19
[INFO] [stdout]     |
[INFO] [stdout] 134 |         Ok(Self { pipeline })
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Pipeline::pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |         self.pipeline.process_document(html, css)
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Pipeline::pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |         self.pipeline.clear_cache();
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |             builder: Config::builder(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:181:9
[INFO] [stdout]     |
[INFO] [stdout] 181 |         self.builder = self.builder.viewport(width, height);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:181:24
[INFO] [stdout]     |
[INFO] [stdout] 181 |         self.builder = self.builder.viewport(width, height);
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         self.builder = self.builder.dpi(dpi);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:190:24
[INFO] [stdout]     |
[INFO] [stdout] 190 |         self.builder = self.builder.dpi(dpi);
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 199 |         self.builder = self.builder.default_font(font);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:199:24
[INFO] [stdout]     |
[INFO] [stdout] 199 |         self.builder = self.builder.default_font(font);
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |         self.builder = self.builder.font_size(size);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:208:24
[INFO] [stdout]     |
[INFO] [stdout] 208 |         self.builder = self.builder.font_size(size);
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |         self.builder.build()
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |             html_content: html.to_string(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |             css_content: css.map(|s| s.to_string()),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:66:13
[INFO] [stdout]    |
[INFO] [stdout] 66 |             config: EmbeddedConfig::default(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::validation`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             validation: ValidationSettings::default(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:77:20
[INFO] [stdout]    |
[INFO] [stdout] 77 |             .html(&self.html_content);
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:79:29
[INFO] [stdout]    |
[INFO] [stdout] 79 |         if let Some(css) = &self.css_content {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:84:36
[INFO] [stdout]    |
[INFO] [stdout] 84 |         builder = builder.viewport(self.config.viewport);
[INFO] [stdout]    |                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |         builder = builder.font_family(&self.config.font_family);
[INFO] [stdout]    |                                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:86:37
[INFO] [stdout]    |
[INFO] [stdout] 86 |         builder = builder.font_size(self.config.font_size);
[INFO] [stdout]    |                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:87:34
[INFO] [stdout]    |
[INFO] [stdout] 87 |         builder = builder.margin(self.config.margins.top);
[INFO] [stdout]    |                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 |         if self.html_content.trim().is_empty() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::severity`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:103:17
[INFO] [stdout]     |
[INFO] [stdout] 103 |                 severity: IssueSeverity::Error,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::message`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:104:17
[INFO] [stdout]     |
[INFO] [stdout] 104 |                 message: "HTML content is empty".to_string(),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::location`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 location: None,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::suggestion`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:106:17
[INFO] [stdout]     |
[INFO] [stdout] 106 |                 suggestion: Some("Provide valid HTML content".to_string()),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         if !self.html_content.contains('<') || !self.html_content.contains('>') {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:111:49
[INFO] [stdout]     |
[INFO] [stdout] 111 |         if !self.html_content.contains('<') || !self.html_content.contains('>') {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::severity`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:113:17
[INFO] [stdout]     |
[INFO] [stdout] 113 |                 severity: IssueSeverity::Warning,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::message`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |                 message: "HTML content may not contain valid markup".to_string(),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::location`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 location: None,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::suggestion`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:116:17
[INFO] [stdout]     |
[INFO] [stdout] 116 |                 suggestion: Some("Ensure HTML contains valid tags".to_string()),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:121:29
[INFO] [stdout]     |
[INFO] [stdout] 121 |         if let Some(css) = &self.css_content {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::severity`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:124:21
[INFO] [stdout]     |
[INFO] [stdout] 124 |                     severity: IssueSeverity::Warning,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::message`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:125:21
[INFO] [stdout]     |
[INFO] [stdout] 125 |                     message: "CSS content is empty".to_string(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::location`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:126:21
[INFO] [stdout]     |
[INFO] [stdout] 126 |                     location: None,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::suggestion`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:127:21
[INFO] [stdout]     |
[INFO] [stdout] 127 |                     suggestion: Some("Remove empty CSS or provide valid styles".to_string()),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationResult::is_valid`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             is_valid: issues.iter().all(|i| i.severity != IssueSeverity::Error),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::severity`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:133:45
[INFO] [stdout]     |
[INFO] [stdout] 133 |             is_valid: issues.iter().all(|i| i.severity != IssueSeverity::Error),
[INFO] [stdout]     |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationResult::issues`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |             issues,
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::html_size`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:144:13
[INFO] [stdout]     |
[INFO] [stdout] 144 |             html_size: self.html_content.len(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:144:24
[INFO] [stdout]     |
[INFO] [stdout] 144 |             html_size: self.html_content.len(),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::css_size`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             css_size: self.css_content.as_ref().map(|c| c.len()).unwrap_or(0),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:145:23
[INFO] [stdout]     |
[INFO] [stdout] 145 |             css_size: self.css_content.as_ref().map(|c| c.len()).unwrap_or(0),
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::estimated_pages`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |             estimated_pages: 1, // Simplified estimation
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::has_css`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:147:13
[INFO] [stdout]     |
[INFO] [stdout] 147 |             has_css: self.css_content.is_some(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:147:22
[INFO] [stdout]     |
[INFO] [stdout] 147 |             has_css: self.css_content.is_some(),
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::font_family`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:148:13
[INFO] [stdout]     |
[INFO] [stdout] 148 |             font_family: self.config.font_family.clone(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:148:26
[INFO] [stdout]     |
[INFO] [stdout] 148 |             font_family: self.config.font_family.clone(),
[INFO] [stdout]     |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::viewport`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |             viewport: self.config.viewport,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:149:23
[INFO] [stdout]     |
[INFO] [stdout] 149 |             viewport: self.config.viewport,
[INFO] [stdout]     |                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:158:9
[INFO] [stdout]     |
[INFO] [stdout] 158 |         self.config.viewport = Viewport::new(
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |         self.config.font_family = family.to_string();
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         self.config.font_size = clamp(size, 6.0, 72.0);
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:178:9
[INFO] [stdout]     |
[INFO] [stdout] 178 |         self.validation.level = level;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |             html_content: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |             css_content: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |             config: EmbeddedConfig::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:207:13
[INFO] [stdout]     |
[INFO] [stdout] 207 |             validation: ValidationSettings::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 216 |         self.html_content = Some(html.to_string());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         self.css_content = Some(css.to_string());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:234:9
[INFO] [stdout]     |
[INFO] [stdout] 234 |         self.config.viewport = Viewport::new(
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:246:9
[INFO] [stdout]     |
[INFO] [stdout] 246 |         self.config.font_family = family.to_string();
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:255:9
[INFO] [stdout]     |
[INFO] [stdout] 255 |         self.config.font_size = clamp(size, 6.0, 72.0);
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:264:9
[INFO] [stdout]     |
[INFO] [stdout] 264 |         self.config.margins = Margins {
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:278:9
[INFO] [stdout]     |
[INFO] [stdout] 278 |         self.validation.level = if enable {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:291:9
[INFO] [stdout]     |
[INFO] [stdout] 291 |         self.validation.level = level;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:300:28
[INFO] [stdout]     |
[INFO] [stdout] 300 |         let html_content = self.html_content.ok_or_else(|| WebPdfError::ValidationError {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:307:32
[INFO] [stdout]     |
[INFO] [stdout] 307 |         if let Some(ref css) = self.css_content {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:312:13
[INFO] [stdout]     |
[INFO] [stdout] 312 |             html_content,
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:313:13
[INFO] [stdout]     |
[INFO] [stdout] 313 |             css_content: self.css_content,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:313:26
[INFO] [stdout]     |
[INFO] [stdout] 313 |             css_content: self.css_content,
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:314:13
[INFO] [stdout]     |
[INFO] [stdout] 314 |             config: self.config,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:314:21
[INFO] [stdout]     |
[INFO] [stdout] 314 |             config: self.config,
[INFO] [stdout]     |                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:315:13
[INFO] [stdout]     |
[INFO] [stdout] 315 |             validation: self.validation,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:315:25
[INFO] [stdout]     |
[INFO] [stdout] 315 |             validation: self.validation,
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::inner`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |             inner: NewFontManager::new(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:53:13
[INFO] [stdout]    |
[INFO] [stdout] 53 |             loaded_fonts: HashMap::new(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::inner`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:68:27
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let font_family = self.inner.get_font_family(&descriptor);
[INFO] [stdout]    |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:69:30
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let font_id = FontId(self.loaded_fonts.len() as u32);
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         self.loaded_fonts.insert(family.to_string(), FontInfo {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 85 |         self.loaded_fonts.get(family)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |         self.loaded_fonts.values().collect()
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::inner`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |         self.inner.clear_caches();
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |         self.loaded_fonts.clear();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_family`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:156:9
[INFO] [stdout]     |
[INFO] [stdout] 156 |         self.font_family = family.to_string();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |         self.font_size = clamp(size, 6.0, 72.0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::line_height`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 174 |         self.line_height = clamp(height, 0.5, 3.0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::color`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |         self.color = color;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::weight`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |         self.weight = weight;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_family`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:203:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |             self.font_family,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |             self.font_size,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::line_height`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |             self.line_height,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::color`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |             self.color.to_css(),
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::weight`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:207:13
[INFO] [stdout]     |
[INFO] [stdout] 207 |             self.weight.to_css(),
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::style`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:208:13
[INFO] [stdout]     |
[INFO] [stdout] 208 |             self.style.to_css()
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_family`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:216:13
[INFO] [stdout]     |
[INFO] [stdout] 216 |             font_family: "system-ui".to_string(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:217:13
[INFO] [stdout]     |
[INFO] [stdout] 217 |             font_size: 16.0,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::line_height`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:218:13
[INFO] [stdout]     |
[INFO] [stdout] 218 |             line_height: 1.4,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::letter_spacing`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |             letter_spacing: 0.0,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::word_spacing`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:220:13
[INFO] [stdout]     |
[INFO] [stdout] 220 |             word_spacing: 1.0,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::color`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:221:13
[INFO] [stdout]     |
[INFO] [stdout] 221 |             color: TextColor::Black,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::weight`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |             weight: FontWeight::Normal,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::style`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:223:13
[INFO] [stdout]     |
[INFO] [stdout] 223 |             style: FontVariant::Normal,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::content`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |             content: content.to_string(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:252:13
[INFO] [stdout]     |
[INFO] [stdout] 252 |             typography: Typography::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::bounds`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:253:13
[INFO] [stdout]     |
[INFO] [stdout] 253 |             bounds: TextBounds::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::metrics`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |             metrics: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |         self.typography = typography;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::bounds`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:272:9
[INFO] [stdout]     |
[INFO] [stdout] 272 |         self.bounds = bounds;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::content`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:282:26
[INFO] [stdout]     |
[INFO] [stdout] 282 |         let char_count = self.content.chars().count();
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:283:51
[INFO] [stdout]     |
[INFO] [stdout] 283 |         let estimated_width = char_count as f32 * self.typography.font_size * 0.6;
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:283:51
[INFO] [stdout]     |
[INFO] [stdout] 283 |         let estimated_width = char_count as f32 * self.typography.font_size * 0.6;
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::bounds`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:284:45
[INFO] [stdout]     |
[INFO] [stdout] 284 |         let line_count = (estimated_width / self.bounds.width).ceil().max(1.0) as usize;
[INFO] [stdout]     |                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:285:42
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let height = line_count as f32 * self.typography.font_size * self.typography.line_height;
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:285:42
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let height = line_count as f32 * self.typography.font_size * self.typography.line_height;
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:285:70
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let height = line_count as f32 * self.typography.font_size * self.typography.line_height;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::line_height`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:285:70
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let height = line_count as f32 * self.typography.font_size * self.typography.line_height;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::metrics`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:287:9
[INFO] [stdout]     |
[INFO] [stdout] 287 |         self.metrics = Some(TextMetrics {
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::bounds`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:288:40
[INFO] [stdout]     |
[INFO] [stdout] 288 |             width: estimated_width.min(self.bounds.width),
[INFO] [stdout]     |                                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:292:23
[INFO] [stdout]     |
[INFO] [stdout] 292 |             baseline: self.typography.font_size * 0.8,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:292:23
[INFO] [stdout]     |
[INFO] [stdout] 292 |             baseline: self.typography.font_size * 0.8,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::metrics`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 295 |         Ok(self.metrics.as_ref().unwrap())
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::metrics`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |         self.metrics.as_ref()
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextStyle::typography`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |             typography: Typography::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextStyle::typography`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:500:9
[INFO] [stdout]     |
[INFO] [stdout] 500 |         self.typography = typography;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `legacy_compat::text::TextStyle::new`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:507:15
[INFO] [stdout]     |
[INFO] [stdout] 507 |         Self::new()
[INFO] [stdout]     |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `legacy_compat::text::FontManager::new`: Use render::text::fonts::FontManager::new() instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:518:33
[INFO] [stdout]     |
[INFO] [stdout] 518 |         Mutex::new(FontManager::new().expect("Failed to create legacy font manager"))
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:48:19
[INFO] [stdout]    |
[INFO] [stdout] 48 |         Ok(Self { processor })
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:57:19
[INFO] [stdout]    |
[INFO] [stdout] 57 |         Ok(Self { processor })
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         self.processor.html_to_pdf(html)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |         self.processor.html_css_to_pdf(html, css)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/core.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |         self.processor.file_to_pdf(path)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Document::processor`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |         self.processor.clear_cache();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Pipeline::pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:125:19
[INFO] [stdout]     |
[INFO] [stdout] 125 |         Ok(Self { pipeline })
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Pipeline::pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:134:19
[INFO] [stdout]     |
[INFO] [stdout] 134 |         Ok(Self { pipeline })
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Pipeline::pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:142:9
[INFO] [stdout]     |
[INFO] [stdout] 142 |         self.pipeline.process_document(html, css)
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::Pipeline::pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |         self.pipeline.clear_cache();
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |             builder: Config::builder(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:181:9
[INFO] [stdout]     |
[INFO] [stdout] 181 |         self.builder = self.builder.viewport(width, height);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:181:24
[INFO] [stdout]     |
[INFO] [stdout] 181 |         self.builder = self.builder.viewport(width, height);
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |         self.builder = self.builder.dpi(dpi);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:190:24
[INFO] [stdout]     |
[INFO] [stdout] 190 |         self.builder = self.builder.dpi(dpi);
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 199 |         self.builder = self.builder.default_font(font);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:199:24
[INFO] [stdout]     |
[INFO] [stdout] 199 |         self.builder = self.builder.default_font(font);
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |         self.builder = self.builder.font_size(size);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:208:24
[INFO] [stdout]     |
[INFO] [stdout] 208 |         self.builder = self.builder.font_size(size);
[INFO] [stdout]     |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::core::LegacyConfigBuilder::builder`: Use Config::builder() instead
[INFO] [stdout]    --> src/legacy_compat/core.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |         self.builder.build()
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:64:13
[INFO] [stdout]    |
[INFO] [stdout] 64 |             html_content: html.to_string(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |             css_content: css.map(|s| s.to_string()),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:66:13
[INFO] [stdout]    |
[INFO] [stdout] 66 |             config: EmbeddedConfig::default(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::validation`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             validation: ValidationSettings::default(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:77:20
[INFO] [stdout]    |
[INFO] [stdout] 77 |             .html(&self.html_content);
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:79:29
[INFO] [stdout]    |
[INFO] [stdout] 79 |         if let Some(css) = &self.css_content {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:84:36
[INFO] [stdout]    |
[INFO] [stdout] 84 |         builder = builder.viewport(self.config.viewport);
[INFO] [stdout]    |                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |         builder = builder.font_family(&self.config.font_family);
[INFO] [stdout]    |                                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:86:37
[INFO] [stdout]    |
[INFO] [stdout] 86 |         builder = builder.font_size(self.config.font_size);
[INFO] [stdout]    |                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]   --> src/legacy_compat/embedded.rs:87:34
[INFO] [stdout]    |
[INFO] [stdout] 87 |         builder = builder.margin(self.config.margins.top);
[INFO] [stdout]    |                                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 |         if self.html_content.trim().is_empty() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::severity`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:103:17
[INFO] [stdout]     |
[INFO] [stdout] 103 |                 severity: IssueSeverity::Error,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::message`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:104:17
[INFO] [stdout]     |
[INFO] [stdout] 104 |                 message: "HTML content is empty".to_string(),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::location`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:105:17
[INFO] [stdout]     |
[INFO] [stdout] 105 |                 location: None,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::suggestion`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:106:17
[INFO] [stdout]     |
[INFO] [stdout] 106 |                 suggestion: Some("Provide valid HTML content".to_string()),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:111:13
[INFO] [stdout]     |
[INFO] [stdout] 111 |         if !self.html_content.contains('<') || !self.html_content.contains('>') {
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:111:49
[INFO] [stdout]     |
[INFO] [stdout] 111 |         if !self.html_content.contains('<') || !self.html_content.contains('>') {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::severity`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:113:17
[INFO] [stdout]     |
[INFO] [stdout] 113 |                 severity: IssueSeverity::Warning,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::message`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |                 message: "HTML content may not contain valid markup".to_string(),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::location`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 location: None,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::suggestion`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:116:17
[INFO] [stdout]     |
[INFO] [stdout] 116 |                 suggestion: Some("Ensure HTML contains valid tags".to_string()),
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:121:29
[INFO] [stdout]     |
[INFO] [stdout] 121 |         if let Some(css) = &self.css_content {
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::severity`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:124:21
[INFO] [stdout]     |
[INFO] [stdout] 124 |                     severity: IssueSeverity::Warning,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::message`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:125:21
[INFO] [stdout]     |
[INFO] [stdout] 125 |                     message: "CSS content is empty".to_string(),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::location`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:126:21
[INFO] [stdout]     |
[INFO] [stdout] 126 |                     location: None,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::suggestion`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:127:21
[INFO] [stdout]     |
[INFO] [stdout] 127 |                     suggestion: Some("Remove empty CSS or provide valid styles".to_string()),
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationResult::is_valid`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             is_valid: issues.iter().all(|i| i.severity != IssueSeverity::Error),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationIssue::severity`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:133:45
[INFO] [stdout]     |
[INFO] [stdout] 133 |             is_valid: issues.iter().all(|i| i.severity != IssueSeverity::Error),
[INFO] [stdout]     |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::ValidationResult::issues`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |             issues,
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::html_size`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:144:13
[INFO] [stdout]     |
[INFO] [stdout] 144 |             html_size: self.html_content.len(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:144:24
[INFO] [stdout]     |
[INFO] [stdout] 144 |             html_size: self.html_content.len(),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::css_size`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:145:13
[INFO] [stdout]     |
[INFO] [stdout] 145 |             css_size: self.css_content.as_ref().map(|c| c.len()).unwrap_or(0),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:145:23
[INFO] [stdout]     |
[INFO] [stdout] 145 |             css_size: self.css_content.as_ref().map(|c| c.len()).unwrap_or(0),
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::estimated_pages`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:146:13
[INFO] [stdout]     |
[INFO] [stdout] 146 |             estimated_pages: 1, // Simplified estimation
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::has_css`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:147:13
[INFO] [stdout]     |
[INFO] [stdout] 147 |             has_css: self.css_content.is_some(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:147:22
[INFO] [stdout]     |
[INFO] [stdout] 147 |             has_css: self.css_content.is_some(),
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::font_family`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:148:13
[INFO] [stdout]     |
[INFO] [stdout] 148 |             font_family: self.config.font_family.clone(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:148:26
[INFO] [stdout]     |
[INFO] [stdout] 148 |             font_family: self.config.font_family.clone(),
[INFO] [stdout]     |                          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::DocumentMetadata::viewport`: Use document processing metrics instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |             viewport: self.config.viewport,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:149:23
[INFO] [stdout]     |
[INFO] [stdout] 149 |             viewport: self.config.viewport,
[INFO] [stdout]     |                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:158:9
[INFO] [stdout]     |
[INFO] [stdout] 158 |         self.config.viewport = Viewport::new(
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |         self.config.font_family = family.to_string();
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |         self.config.font_size = clamp(size, 6.0, 72.0);
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:178:9
[INFO] [stdout]     |
[INFO] [stdout] 178 |         self.validation.level = level;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |             html_content: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |             css_content: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |             config: EmbeddedConfig::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:207:13
[INFO] [stdout]     |
[INFO] [stdout] 207 |             validation: ValidationSettings::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 216 |         self.html_content = Some(html.to_string());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         self.css_content = Some(css.to_string());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:234:9
[INFO] [stdout]     |
[INFO] [stdout] 234 |         self.config.viewport = Viewport::new(
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:246:9
[INFO] [stdout]     |
[INFO] [stdout] 246 |         self.config.font_family = family.to_string();
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:255:9
[INFO] [stdout]     |
[INFO] [stdout] 255 |         self.config.font_size = clamp(size, 6.0, 72.0);
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:264:9
[INFO] [stdout]     |
[INFO] [stdout] 264 |         self.config.margins = Margins {
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:278:9
[INFO] [stdout]     |
[INFO] [stdout] 278 |         self.validation.level = if enable {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:291:9
[INFO] [stdout]     |
[INFO] [stdout] 291 |         self.validation.level = level;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:300:28
[INFO] [stdout]     |
[INFO] [stdout] 300 |         let html_content = self.html_content.ok_or_else(|| WebPdfError::ValidationError {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:307:32
[INFO] [stdout]     |
[INFO] [stdout] 307 |         if let Some(ref css) = self.css_content {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::html_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:312:13
[INFO] [stdout]     |
[INFO] [stdout] 312 |             html_content,
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:313:13
[INFO] [stdout]     |
[INFO] [stdout] 313 |             css_content: self.css_content,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::css_content`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:313:26
[INFO] [stdout]     |
[INFO] [stdout] 313 |             css_content: self.css_content,
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:314:13
[INFO] [stdout]     |
[INFO] [stdout] 314 |             config: self.config,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::config`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:314:21
[INFO] [stdout]     |
[INFO] [stdout] 314 |             config: self.config,
[INFO] [stdout]     |                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocument::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:315:13
[INFO] [stdout]     |
[INFO] [stdout] 315 |             validation: self.validation,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::embedded::EmbeddedDocumentBuilder::validation`: Use DocumentBuilder instead
[INFO] [stdout]    --> src/legacy_compat/embedded.rs:315:25
[INFO] [stdout]     |
[INFO] [stdout] 315 |             validation: self.validation,
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::inner`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |             inner: NewFontManager::new(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:53:13
[INFO] [stdout]    |
[INFO] [stdout] 53 |             loaded_fonts: HashMap::new(),
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::inner`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:68:27
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let font_family = self.inner.get_font_family(&descriptor);
[INFO] [stdout]    |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:69:30
[INFO] [stdout]    |
[INFO] [stdout] 69 |         let font_id = FontId(self.loaded_fonts.len() as u32);
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         self.loaded_fonts.insert(family.to_string(), FontInfo {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 85 |         self.loaded_fonts.get(family)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> src/legacy_compat/text.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |         self.loaded_fonts.values().collect()
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::inner`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |         self.inner.clear_caches();
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::FontManager::loaded_fonts`: Use render::text::fonts::FontManager instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |         self.loaded_fonts.clear();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_family`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:156:9
[INFO] [stdout]     |
[INFO] [stdout] 156 |         self.font_family = family.to_string();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |         self.font_size = clamp(size, 6.0, 72.0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::line_height`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:174:9
[INFO] [stdout]     |
[INFO] [stdout] 174 |         self.line_height = clamp(height, 0.5, 3.0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::color`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:183:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |         self.color = color;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::weight`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |         self.weight = weight;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_family`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:203:13
[INFO] [stdout]     |
[INFO] [stdout] 203 |             self.font_family,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |             self.font_size,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::line_height`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |             self.line_height,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::color`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:206:13
[INFO] [stdout]     |
[INFO] [stdout] 206 |             self.color.to_css(),
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::weight`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:207:13
[INFO] [stdout]     |
[INFO] [stdout] 207 |             self.weight.to_css(),
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::style`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:208:13
[INFO] [stdout]     |
[INFO] [stdout] 208 |             self.style.to_css()
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_family`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:216:13
[INFO] [stdout]     |
[INFO] [stdout] 216 |             font_family: "system-ui".to_string(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:217:13
[INFO] [stdout]     |
[INFO] [stdout] 217 |             font_size: 16.0,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::line_height`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:218:13
[INFO] [stdout]     |
[INFO] [stdout] 218 |             line_height: 1.4,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::letter_spacing`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |             letter_spacing: 0.0,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::word_spacing`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:220:13
[INFO] [stdout]     |
[INFO] [stdout] 220 |             word_spacing: 1.0,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::color`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:221:13
[INFO] [stdout]     |
[INFO] [stdout] 221 |             color: TextColor::Black,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::weight`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |             weight: FontWeight::Normal,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::style`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:223:13
[INFO] [stdout]     |
[INFO] [stdout] 223 |             style: FontVariant::Normal,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::content`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |             content: content.to_string(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:252:13
[INFO] [stdout]     |
[INFO] [stdout] 252 |             typography: Typography::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::bounds`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:253:13
[INFO] [stdout]     |
[INFO] [stdout] 253 |             bounds: TextBounds::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::metrics`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |             metrics: None,
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |         self.typography = typography;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::bounds`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:272:9
[INFO] [stdout]     |
[INFO] [stdout] 272 |         self.bounds = bounds;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::content`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:282:26
[INFO] [stdout]     |
[INFO] [stdout] 282 |         let char_count = self.content.chars().count();
[INFO] [stdout]     |                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:283:51
[INFO] [stdout]     |
[INFO] [stdout] 283 |         let estimated_width = char_count as f32 * self.typography.font_size * 0.6;
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:283:51
[INFO] [stdout]     |
[INFO] [stdout] 283 |         let estimated_width = char_count as f32 * self.typography.font_size * 0.6;
[INFO] [stdout]     |                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::bounds`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:284:45
[INFO] [stdout]     |
[INFO] [stdout] 284 |         let line_count = (estimated_width / self.bounds.width).ceil().max(1.0) as usize;
[INFO] [stdout]     |                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:285:42
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let height = line_count as f32 * self.typography.font_size * self.typography.line_height;
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:285:42
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let height = line_count as f32 * self.typography.font_size * self.typography.line_height;
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:285:70
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let height = line_count as f32 * self.typography.font_size * self.typography.line_height;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::line_height`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:285:70
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let height = line_count as f32 * self.typography.font_size * self.typography.line_height;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::metrics`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:287:9
[INFO] [stdout]     |
[INFO] [stdout] 287 |         self.metrics = Some(TextMetrics {
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::bounds`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:288:40
[INFO] [stdout]     |
[INFO] [stdout] 288 |             width: estimated_width.min(self.bounds.width),
[INFO] [stdout]     |                                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::typography`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:292:23
[INFO] [stdout]     |
[INFO] [stdout] 292 |             baseline: self.typography.font_size * 0.8,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::Typography::font_size`: Use DocumentBuilder font settings instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:292:23
[INFO] [stdout]     |
[INFO] [stdout] 292 |             baseline: self.typography.font_size * 0.8,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::metrics`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:295:12
[INFO] [stdout]     |
[INFO] [stdout] 295 |         Ok(self.metrics.as_ref().unwrap())
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextLayout::metrics`: Text layout is handled automatically in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |         self.metrics.as_ref()
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextStyle::typography`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |             typography: Typography::default(),
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `legacy_compat::text::TextStyle::typography`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:500:9
[INFO] [stdout]     |
[INFO] [stdout] 500 |         self.typography = typography;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `legacy_compat::text::TextStyle::new`: Use CSS styles in the new system
[INFO] [stdout]    --> src/legacy_compat/text.rs:507:15
[INFO] [stdout]     |
[INFO] [stdout] 507 |         Self::new()
[INFO] [stdout]     |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated function `legacy_compat::text::FontManager::new`: Use render::text::fonts::FontManager::new() instead
[INFO] [stdout]    --> src/legacy_compat/text.rs:518:33
[INFO] [stdout]     |
[INFO] [stdout] 518 |         Mutex::new(FontManager::new().expect("Failed to create legacy font manager"))
[INFO] [stdout]     |                                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ancestor`
[INFO] [stdout]    --> src/parser/selector.rs:254:38
[INFO] [stdout]     |
[INFO] [stdout] 254 |             SelectorType::Descendant(ancestor, descendant) => {
[INFO] [stdout]     |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ancestor`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `element_part` is never read
[INFO] [stdout]    --> src/parser/mod.rs:312:32
[INFO] [stdout]     |
[INFO] [stdout] 312 |         let mut element_part = word;
[INFO] [stdout]     |                                ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `element_id`
[INFO] [stdout]    --> src/style/cascade.rs:240:9
[INFO] [stdout]     |
[INFO] [stdout] 240 |         element_id: ElementId,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_element_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `element_info`
[INFO] [stdout]    --> src/style/cascade.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |         element_info: &HashMap<ElementId, ElementInfo>,
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_element_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `element_part` is never read
[INFO] [stdout]    --> src/style/cascade.rs:445:36
[INFO] [stdout]     |
[INFO] [stdout] 445 |             let mut element_part = word;
[INFO] [stdout]     |                                    ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `document`
[INFO] [stdout]    --> src/style/computed.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 188 |         document: &crate::parser::ParsedDocument,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_document`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/style/computed.rs:344:9
[INFO] [stdout]     |
[INFO] [stdout] 344 |         context: &StyleContext,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/style/computed.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 |         context: &StyleContext,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/layout/box_model.rs:334:21
[INFO] [stdout]     |
[INFO] [stdout] 334 |                     _ => *val, // Default to pixels
[INFO] [stdout]     |                     ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/layout/box_model.rs:334:21
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     LengthUnit::Px => *val,
[INFO] [stdout]     |                     -------------- matches some of the same values
[INFO] [stdout] 327 |                     LengthUnit::Em => *val * self.default_font_size,
[INFO] [stdout]     |                     -------------- matches some of the same values
[INFO] [stdout] 328 |                     LengthUnit::Rem => *val * self.default_font_size,
[INFO] [stdout]     |                     --------------- matches some of the same values
[INFO] [stdout] 329 |                     LengthUnit::Pt => *val * 1.33, // Convert pt to px
[INFO] [stdout]     |                     -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 334 |                     _ => *val, // Default to pixels
[INFO] [stdout]     |                     ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `element_id`
[INFO] [stdout]    --> src/render/pdf.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         let element_id = layout_tree
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_element_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/render/pdf.rs:500:17
[INFO] [stdout]     |
[INFO] [stdout] 499 |                 PropertyValue::String(s) => s.parse::<i32>().ok(),
[INFO] [stdout]     |                 ------------------------ matches all the relevant values
[INFO] [stdout] 500 |                 PropertyValue::String(s) => match s.as_str() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/render/pdf.rs:587:35
[INFO] [stdout]     |
[INFO] [stdout] 587 |     fn create_document(&mut self, config: &RenderConfig) -> WebPdfResult<PdfDocument> {
[INFO] [stdout]     |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ancestor`
[INFO] [stdout]    --> src/parser/selector.rs:254:38
[INFO] [stdout]     |
[INFO] [stdout] 254 |             SelectorType::Descendant(ancestor, descendant) => {
[INFO] [stdout]     |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ancestor`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `root_element_id`
[INFO] [stdout]    --> src/render/pdf.rs:612:13
[INFO] [stdout]     |
[INFO] [stdout] 612 |         let root_element_id = layout_tree
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_root_element_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]   --> src/render/graphics/images.rs:67:81
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn draw_image_at(&self, surface: &mut Surface<'_>, image: &RasterImage, position: Point) -> WebPdfResult<()> {
[INFO] [stdout]    |                                                                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]   --> src/render/graphics/images.rs:81:85
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn draw_image_scaled(&self, surface: &mut Surface<'_>, image: &RasterImage, position: Point, scale: f32) -> WebPdfResult<()> {
[INFO] [stdout]    |                                                                                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `element_part` is never read
[INFO] [stdout]    --> src/parser/mod.rs:312:32
[INFO] [stdout]     |
[INFO] [stdout] 312 |         let mut element_part = word;
[INFO] [stdout]     |                                ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `element_id`
[INFO] [stdout]    --> src/style/cascade.rs:240:9
[INFO] [stdout]     |
[INFO] [stdout] 240 |         element_id: ElementId,
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_element_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `element_info`
[INFO] [stdout]    --> src/style/cascade.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |         element_info: &HashMap<ElementId, ElementInfo>,
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_element_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `element_part` is never read
[INFO] [stdout]    --> src/style/cascade.rs:445:36
[INFO] [stdout]     |
[INFO] [stdout] 445 |             let mut element_part = word;
[INFO] [stdout]     |                                    ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `document`
[INFO] [stdout]    --> src/style/computed.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 188 |         document: &crate::parser::ParsedDocument,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_document`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `x_offset` is assigned to, but never used
[INFO] [stdout]    --> src/render/text/glyphs.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |         let mut x_offset = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_x_offset` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `x_offset` is never read
[INFO] [stdout]    --> src/render/text/glyphs.rs:155:13
[INFO] [stdout]     |
[INFO] [stdout] 155 |             x_offset += glyph.advance;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/style/computed.rs:344:9
[INFO] [stdout]     |
[INFO] [stdout] 344 |         context: &StyleContext,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/style/computed.rs:386:9
[INFO] [stdout]     |
[INFO] [stdout] 386 |         context: &StyleContext,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `resource_id`
[INFO] [stdout]    --> src/document/context.rs:434:32
[INFO] [stdout]     |
[INFO] [stdout] 434 |     pub fn get_resource(&self, resource_id: &str) -> Option<ResourceType> {
[INFO] [stdout]     |                                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resource_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]   --> src/legacy_compat/core.rs:88:36
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub fn set_viewport(&mut self, width: f32, height: f32) -> WebPdfResult<()> {
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]   --> src/legacy_compat/core.rs:88:48
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub fn set_viewport(&mut self, width: f32, height: f32) -> WebPdfResult<()> {
[INFO] [stdout]    |                                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/layout/box_model.rs:334:21
[INFO] [stdout]     |
[INFO] [stdout] 334 |                     _ => *val, // Default to pixels
[INFO] [stdout]     |                     ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/layout/box_model.rs:334:21
[INFO] [stdout]     |
[INFO] [stdout] 326 |                     LengthUnit::Px => *val,
[INFO] [stdout]     |                     -------------- matches some of the same values
[INFO] [stdout] 327 |                     LengthUnit::Em => *val * self.default_font_size,
[INFO] [stdout]     |                     -------------- matches some of the same values
[INFO] [stdout] 328 |                     LengthUnit::Rem => *val * self.default_font_size,
[INFO] [stdout]     |                     --------------- matches some of the same values
[INFO] [stdout] 329 |                     LengthUnit::Pt => *val * 1.33, // Convert pt to px
[INFO] [stdout]     |                     -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 334 |                     _ => *val, // Default to pixels
[INFO] [stdout]     |                     ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `font_manager`
[INFO] [stdout]    --> src/legacy_compat/text.rs:249:31
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub fn new(content: &str, font_manager: &FontManager) -> WebPdfResult<Self> {
[INFO] [stdout]     |                               ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_font_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `element_id`
[INFO] [stdout]    --> src/render/pdf.rs:132:13
[INFO] [stdout]     |
[INFO] [stdout] 132 |         let element_id = layout_tree
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_element_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/render/pdf.rs:500:17
[INFO] [stdout]     |
[INFO] [stdout] 499 |                 PropertyValue::String(s) => s.parse::<i32>().ok(),
[INFO] [stdout]     |                 ------------------------ matches all the relevant values
[INFO] [stdout] 500 |                 PropertyValue::String(s) => match s.as_str() {
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/render/pdf.rs:587:35
[INFO] [stdout]     |
[INFO] [stdout] 587 |     fn create_document(&mut self, config: &RenderConfig) -> WebPdfResult<PdfDocument> {
[INFO] [stdout]     |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `root_element_id`
[INFO] [stdout]    --> src/render/pdf.rs:612:13
[INFO] [stdout]     |
[INFO] [stdout] 612 |         let root_element_id = layout_tree
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_root_element_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]   --> src/render/graphics/images.rs:67:81
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub fn draw_image_at(&self, surface: &mut Surface<'_>, image: &RasterImage, position: Point) -> WebPdfResult<()> {
[INFO] [stdout]    |                                                                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]   --> src/render/graphics/images.rs:81:85
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn draw_image_scaled(&self, surface: &mut Surface<'_>, image: &RasterImage, position: Point, scale: f32) -> WebPdfResult<()> {
[INFO] [stdout]    |                                                                                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/utils/diagnostics.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Timer {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 26 |     /// Operation name being timed
[INFO] [stdout] 27 |     name: 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: field `name` is never read
[INFO] [stdout]   --> src/utils/diagnostics.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct Profiler {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 36 |     /// Session name
[INFO] [stdout] 37 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/parser/selector.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct SelectorMatcher {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 26 |     /// Configuration for selector matching
[INFO] [stdout] 27 |     config: ParserConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config` and `specificity_calc` are never read
[INFO] [stdout]   --> src/style/cascade.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct CascadeEngine {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 15 |     /// Engine configuration
[INFO] [stdout] 16 |     config: StyleConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 17 |     /// Specificity calculator
[INFO] [stdout] 18 |     specificity_calc: SpecificityCalculator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CascadeEngine` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/style/computed.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ComputedStyleSystem {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 15 |     /// Configuration for style computation
[INFO] [stdout] 16 |     config: StyleConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ComputedStyleSystem` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/style/tree.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct StyleTreeBuilder {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 18 |     /// Configuration for tree building
[INFO] [stdout] 19 |     config: StyleConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StyleTreeBuilder` 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 `extract_attributes` is never used
[INFO] [stdout]    --> src/layout/engine.rs:492:8
[INFO] [stdout]     |
[INFO] [stdout]  84 | impl LayoutEngine {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 492 |     fn extract_attributes(&self, _attrs: &str) -> HashMap<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `style` and `parent_context` are never read
[INFO] [stdout]   --> src/render/pdf.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | struct NodeRenderContext {
[INFO] [stdout]    |        ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     style: Option<ComputedStyle>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 91 |     /// Parent context for inheritance
[INFO] [stdout] 92 |     parent_context: Option<Box<NodeRenderContext>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeRenderContext` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `context` is never read
[INFO] [stdout]    --> src/document/mod.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct Document {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 114 |     context: DocumentContext,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Document` 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 `get_resource` is never used
[INFO] [stdout]    --> src/document/context.rs:584:8
[INFO] [stdout]     |
[INFO] [stdout] 511 | impl ResourceManager {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 584 |     fn get_resource(&mut self, resource_id: &str) -> Option<ResourceType> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/document/api.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct DocumentProcessor {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     config: ProcessorConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DocumentProcessor` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/utils/diagnostics.rs:473:14
[INFO] [stdout]     |
[INFO] [stdout] 473 |     unsafe { GLOBAL_METRICS.as_mut() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/utils/diagnostics.rs:478:14
[INFO] [stdout]     |
[INFO] [stdout] 478 |     unsafe { GLOBAL_MEMORY_TRACKER.as_mut() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/style/mod.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |         self.cache.insert(cache_key, computed_styles.clone(), 1024); // Approximate size in bytes
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let _ = self.cache.insert(cache_key, computed_styles.clone(), 1024); // Approximate size in bytes
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/layout/engine.rs:479:17
[INFO] [stdout]     |
[INFO] [stdout] 479 |                 layout_tree.cache.insert(cache_key, layout_result, 1024); // Rough size estimate
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 479 |                 let _ = layout_tree.cache.insert(cache_key, layout_result, 1024); // Rough size estimate
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/document/context.rs:543:9
[INFO] [stdout]     |
[INFO] [stdout] 543 |         self.fonts.insert(family_name.to_string(), font_resource, 1024);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 543 |         let _ = self.fonts.insert(family_name.to_string(), font_resource, 1024);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/document/context.rs:561:9
[INFO] [stdout]     |
[INFO] [stdout] 561 |         self.images.insert(image_id.clone(), image_resource, 1024);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 561 |         let _ = self.images.insert(image_id.clone(), image_resource, 1024);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/document/context.rs:578:9
[INFO] [stdout]     |
[INFO] [stdout] 578 |         self.external.insert(resource_id.clone(), external_resource, 512);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 578 |         let _ = self.external.insert(resource_id.clone(), external_resource, 512);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `measurer`
[INFO] [stdout]    --> src/render/text/measurement.rs:336:13
[INFO] [stdout]     |
[INFO] [stdout] 336 |         let measurer = TextMeasurer::new();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_measurer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `x_offset` is assigned to, but never used
[INFO] [stdout]    --> src/render/text/glyphs.rs:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |         let mut x_offset = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_x_offset` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `x_offset` is never read
[INFO] [stdout]    --> src/render/text/glyphs.rs:155:13
[INFO] [stdout]     |
[INFO] [stdout] 155 |             x_offset += glyph.advance;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renderer`
[INFO] [stdout]    --> src/render/text/glyphs.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let renderer = GlyphRenderer::new();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renderer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renderer`
[INFO] [stdout]    --> src/render/text/mod.rs:262:13
[INFO] [stdout]     |
[INFO] [stdout] 262 |         let renderer = TextRenderer::new();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renderer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `resource_id`
[INFO] [stdout]    --> src/document/context.rs:434:32
[INFO] [stdout]     |
[INFO] [stdout] 434 |     pub fn get_resource(&self, resource_id: &str) -> Option<ResourceType> {
[INFO] [stdout]     |                                ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resource_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]   --> src/legacy_compat/core.rs:88:36
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub fn set_viewport(&mut self, width: f32, height: f32) -> WebPdfResult<()> {
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]   --> src/legacy_compat/core.rs:88:48
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub fn set_viewport(&mut self, width: f32, height: f32) -> WebPdfResult<()> {
[INFO] [stdout]    |                                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `font_manager`
[INFO] [stdout]    --> src/legacy_compat/text.rs:249:31
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub fn new(content: &str, font_manager: &FontManager) -> WebPdfResult<Self> {
[INFO] [stdout]     |                               ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_font_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DocumentBuilder`
[INFO] [stdout]  --> tests/test_utils.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use webpdf::document::{DocumentProcessor, DocumentBuilder};
[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: `DocumentBuilder`
[INFO] [stdout]  --> tests/test_utils.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use webpdf::document::{DocumentProcessor, DocumentBuilder};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/utils/diagnostics.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Timer {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 26 |     /// Operation name being timed
[INFO] [stdout] 27 |     name: 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: field `name` is never read
[INFO] [stdout]   --> src/utils/diagnostics.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct Profiler {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 36 |     /// Session name
[INFO] [stdout] 37 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/parser/selector.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct SelectorMatcher {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 26 |     /// Configuration for selector matching
[INFO] [stdout] 27 |     config: ParserConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config` and `specificity_calc` are never read
[INFO] [stdout]   --> src/style/cascade.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct CascadeEngine {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 15 |     /// Engine configuration
[INFO] [stdout] 16 |     config: StyleConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 17 |     /// Specificity calculator
[INFO] [stdout] 18 |     specificity_calc: SpecificityCalculator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CascadeEngine` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/style/computed.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ComputedStyleSystem {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 15 |     /// Configuration for style computation
[INFO] [stdout] 16 |     config: StyleConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ComputedStyleSystem` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/style/tree.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct StyleTreeBuilder {
[INFO] [stdout]    |            ---------------- field in this struct
[INFO] [stdout] 18 |     /// Configuration for tree building
[INFO] [stdout] 19 |     config: StyleConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StyleTreeBuilder` 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 `extract_attributes` is never used
[INFO] [stdout]    --> src/layout/engine.rs:492:8
[INFO] [stdout]     |
[INFO] [stdout]  84 | impl LayoutEngine {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 492 |     fn extract_attributes(&self, _attrs: &str) -> HashMap<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `style` and `parent_context` are never read
[INFO] [stdout]   --> src/render/pdf.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | struct NodeRenderContext {
[INFO] [stdout]    |        ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     style: Option<ComputedStyle>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 91 |     /// Parent context for inheritance
[INFO] [stdout] 92 |     parent_context: Option<Box<NodeRenderContext>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeRenderContext` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `context` is never read
[INFO] [stdout]    --> src/document/mod.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct Document {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 114 |     context: DocumentContext,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Document` 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 `get_resource` is never used
[INFO] [stdout]    --> src/document/context.rs:584:8
[INFO] [stdout]     |
[INFO] [stdout] 511 | impl ResourceManager {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 584 |     fn get_resource(&mut self, resource_id: &str) -> Option<ResourceType> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/document/api.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct DocumentProcessor {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 62 |     config: ProcessorConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DocumentProcessor` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/utils/diagnostics.rs:473:14
[INFO] [stdout]     |
[INFO] [stdout] 473 |     unsafe { GLOBAL_METRICS.as_mut() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/utils/diagnostics.rs:478:14
[INFO] [stdout]     |
[INFO] [stdout] 478 |     unsafe { GLOBAL_MEMORY_TRACKER.as_mut() }
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/style/mod.rs:200:9
[INFO] [stdout]     |
[INFO] [stdout] 200 |         self.cache.insert(cache_key, computed_styles.clone(), 1024); // Approximate size in bytes
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 200 |         let _ = self.cache.insert(cache_key, computed_styles.clone(), 1024); // Approximate size in bytes
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/layout/engine.rs:479:17
[INFO] [stdout]     |
[INFO] [stdout] 479 |                 layout_tree.cache.insert(cache_key, layout_result, 1024); // Rough size estimate
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 479 |                 let _ = layout_tree.cache.insert(cache_key, layout_result, 1024); // Rough size estimate
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `WebPdfError` and `WebPdfResult`
[INFO] [stdout]  --> tests/migration_tests.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     WebPdfResult, WebPdfError
[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 `std::result::Result` that must be used
[INFO] [stdout]    --> src/document/context.rs:543:9
[INFO] [stdout]     |
[INFO] [stdout] 543 |         self.fonts.insert(family_name.to_string(), font_resource, 1024);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 543 |         let _ = self.fonts.insert(family_name.to_string(), font_resource, 1024);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/document/context.rs:561:9
[INFO] [stdout]     |
[INFO] [stdout] 561 |         self.images.insert(image_id.clone(), image_resource, 1024);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 561 |         let _ = self.images.insert(image_id.clone(), image_resource, 1024);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EmbeddedDocument`
[INFO] [stdout]   --> tests/migration_tests.rs:14:16
[INFO] [stdout]    |
[INFO] [stdout] 14 |     embedded::{EmbeddedDocument, EmbeddedDocumentBuilder},
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/document/context.rs:578:9
[INFO] [stdout]     |
[INFO] [stdout] 578 |         self.external.insert(resource_id.clone(), external_resource, 512);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 578 |         let _ = self.external.insert(resource_id.clone(), external_resource, 512);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DocumentBuilder`
[INFO] [stdout]  --> tests/test_utils.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use webpdf::document::{DocumentProcessor, DocumentBuilder};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::Document`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]   --> tests/migration_tests.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     core::{Document as LegacyDocument, Pipeline as LegacyPipeline, html_to_pdf as legacy_html_to_pdf},
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::Pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]   --> tests/migration_tests.rs:13:40
[INFO] [stdout]    |
[INFO] [stdout] 13 |     core::{Document as LegacyDocument, Pipeline as LegacyPipeline, html_to_pdf as legacy_html_to_pdf},
[INFO] [stdout]    |                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `webpdf::legacy_compat::core::html_to_pdf`: Use DocumentBuilder::new().html().build() instead
[INFO] [stdout]   --> tests/migration_tests.rs:13:68
[INFO] [stdout]    |
[INFO] [stdout] 13 |     core::{Document as LegacyDocument, Pipeline as LegacyPipeline, html_to_pdf as legacy_html_to_pdf},
[INFO] [stdout]    |                                                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]   --> tests/migration_tests.rs:14:16
[INFO] [stdout]    |
[INFO] [stdout] 14 |     embedded::{EmbeddedDocument, EmbeddedDocumentBuilder},
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::EmbeddedDocumentBuilder`: Use DocumentBuilder instead
[INFO] [stdout]   --> tests/migration_tests.rs:14:34
[INFO] [stdout]    |
[INFO] [stdout] 14 |     embedded::{EmbeddedDocument, EmbeddedDocumentBuilder},
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::LegacyFontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]   --> tests/migration_tests.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 |     text::{FontManager as LegacyFontManager, Typography, TextColor, FontWeight}
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]   --> tests/migration_tests.rs:15:46
[INFO] [stdout]    |
[INFO] [stdout] 15 |     text::{FontManager as LegacyFontManager, Typography, TextColor, FontWeight}
[INFO] [stdout]    |                                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DocumentBuilder`
[INFO] [stdout]  --> tests/test_utils.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use webpdf::document::{DocumentProcessor, DocumentBuilder};
[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: `DocumentBuilder`
[INFO] [stdout]  --> tests/test_utils.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use webpdf::document::{DocumentProcessor, DocumentBuilder};
[INFO] [stdout]   |                                           ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `webpdf::legacy_compat::core::html_to_pdf`: Use DocumentBuilder::new().html().build() instead
[INFO] [stdout]  --> examples/simple_test.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | use webpdf::legacy_compat::core::html_to_pdf;
[INFO] [stdout]   |                                  ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `webpdf::legacy_compat::core::html_to_pdf`: Use DocumentBuilder::new().html().build() instead
[INFO] [stdout]   --> examples/simple_test.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 |     match html_to_pdf(simple_html) {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `times_id`
[INFO] [stdout]    --> tests/migration_tests.rs:131:9
[INFO] [stdout]     |
[INFO] [stdout] 131 |     let times_id = legacy_font_mgr.load_font("Times New Roman")
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_times_id`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arial_descriptor`
[INFO] [stdout]    --> tests/migration_tests.rs:143:9
[INFO] [stdout]     |
[INFO] [stdout] 143 |     let arial_descriptor = new_mgr.create_font_stack("Arial");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_arial_descriptor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `times_descriptor`
[INFO] [stdout]    --> tests/migration_tests.rs:144:9
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let times_descriptor = new_mgr.create_font_stack("Times New Roman");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_times_descriptor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `legacy_invalid`
[INFO] [stdout]    --> tests/migration_tests.rs:278:9
[INFO] [stdout]     |
[INFO] [stdout] 278 |     let legacy_invalid = legacy_doc.process_html("");
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_legacy_invalid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_invalid`
[INFO] [stdout]    --> tests/migration_tests.rs:282:9
[INFO] [stdout]     |
[INFO] [stdout] 282 |     let new_invalid = new_processor.html_to_pdf("");
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_invalid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved imports `super::ValidationResult`, `super::ExampleValidator`
[INFO] [stdout]   --> examples/validation/runner.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     ValidationResult, ExampleValidator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^ no `ExampleValidator` in the root
[INFO] [stdout]    |     |
[INFO] [stdout]    |     no `ValidationResult` in the root
[INFO] [stdout]    |     help: a similar name exists in the module: `ValidationRunner`
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider importing this struct instead:
[INFO] [stdout]            webpdf::legacy_compat::embedded::ValidationResult
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CssParser`, `CssRule`, `Declaration`, `HtmlParser`, `ParserConfig`, `StyleOrigin`, and `Stylesheet`
[INFO] [stdout]  --> tests/style_tests.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use webpdf::parser::{HtmlParser, CssParser, ParserConfig, Stylesheet, StyleOrigin, CssRule, Declaration};
[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: `ElementId`, `StyleContext`, and `StyleStage`
[INFO] [stdout]  --> tests/style_tests.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use webpdf::style::{StyleEngine, ElementId, StyleContext, StyleStage};
[INFO] [stdout]   |                                  ^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CascadeEngine`
[INFO] [stdout]   --> tests/style_tests.rs:21:57
[INFO] [stdout]    |
[INFO] [stdout] 21 |     use webpdf::style::cascade::{SpecificityCalculator, CascadeEngine};
[INFO] [stdout]    |                                                         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ColorValue`
[INFO] [stdout]   --> tests/style_tests.rs:55:73
[INFO] [stdout]    |
[INFO] [stdout] 55 |     use webpdf::style::computed::{PropertyValueResolver, PropertyValue, ColorValue, LengthUnit};
[INFO] [stdout]    |                                                                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ColorValue`
[INFO] [stdout]    --> tests/style_tests.rs:253:72
[INFO] [stdout]     |
[INFO] [stdout] 253 |     use webpdf::style::computed::{DefaultValueProvider, PropertyValue, ColorValue, LengthUnit};
[INFO] [stdout]     |                                                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufReader`
[INFO] [stdout]  --> examples/validation/performance_check.rs:9:24
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io::{BufRead, BufReader};
[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: `ValidationConfig`
[INFO] [stdout]   --> examples/validation/main.rs:14:32
[INFO] [stdout]    |
[INFO] [stdout] 14 | use runner::{ValidationRunner, ValidationConfig};
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `expected_elements` and `description` are never read
[INFO] [stdout]   --> tests/test_utils.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct TestDocument {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub expected_elements: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub expected_pages: usize,
[INFO] [stdout] 18 |     pub description: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TestDocument` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `memory_usage`, `document_size`, and `pdf_size` are never read
[INFO] [stdout]   --> tests/test_utils.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct PerformanceResult {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub memory_usage: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 27 |     pub success: bool,
[INFO] [stdout] 28 |     pub document_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub pdf_size: usize,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PerformanceResult` 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 `TestProcessor` is never constructed
[INFO] [stdout]   --> tests/test_utils.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct TestProcessor {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/test_utils.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl TestProcessor {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 111 |     /// Create a new test processor
[INFO] [stdout] 112 |     pub fn new() -> WebPdfResult<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn with_config(config: Config) -> WebPdfResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn process_with_measurement(&mut self, test_doc: &TestDocument) -> WebPdfResult<PerformanceResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn get_memory_usage(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn performance_results(&self) -> &[PerformanceResult] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn clear_results(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn metrics(&self) -> &PipelineMetrics {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `assert_performance_bounds` and `assert_pipeline_metrics` are never used
[INFO] [stdout]    --> tests/test_utils.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl TestAssertions {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] 182 |     /// Assert that performance is within acceptable bounds
[INFO] [stdout] 183 |     pub fn assert_performance_bounds(result: &PerformanceResult, max_duration: Duration, max_memory: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn assert_pipeline_metrics(metrics: &PipelineMetrics) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_config` is never used
[INFO] [stdout]    --> tests/test_utils.rs:229:8
[INFO] [stdout]     |
[INFO] [stdout] 229 | pub fn create_test_config(viewport_width: f32, viewport_height: f32, dpi: f32) -> Config {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimal_test_document` is never used
[INFO] [stdout]    --> tests/test_utils.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn minimal_test_document() -> TestDocument {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARSING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:243:15
[INFO] [stdout]     |
[INFO] [stdout] 243 |     pub const PARSING_TARGET: Duration = Duration::from_millis(10);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STYLING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:244:15
[INFO] [stdout]     |
[INFO] [stdout] 244 |     pub const STYLING_TARGET: Duration = Duration::from_millis(5);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAYOUT_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:245:15
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub const LAYOUT_TARGET: Duration = Duration::from_millis(20);
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDERING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 |     pub const RENDERING_TARGET: Duration = Duration::from_millis(50);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `END_TO_END_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:247:15
[INFO] [stdout]     |
[INFO] [stdout] 247 |     pub const END_TO_END_TARGET: Duration = Duration::from_millis(100);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MEMORY_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:249:15
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub const MEMORY_TARGET: usize = 50 * 1024 * 1024; // 50MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIMPLE_DOC_MEMORY` is never used
[INFO] [stdout]    --> tests/test_utils.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 |     pub const SIMPLE_DOC_MEMORY: usize = 5 * 1024 * 1024; // 5MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COMPLEX_DOC_MEMORY` is never used
[INFO] [stdout]    --> tests/test_utils.rs:251:15
[INFO] [stdout]     |
[INFO] [stdout] 251 |     pub const COMPLEX_DOC_MEMORY: usize = 20 * 1024 * 1024; // 20MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `webpdf`
[INFO] [stdout]  --> tests/integration_tests.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use webpdf::*;
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `all_successful` is assigned to, but never used
[INFO] [stdout]    --> tests/integration_tests.rs:154:9
[INFO] [stdout]     |
[INFO] [stdout] 154 |     let mut all_successful = true;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_all_successful` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `all_successful` is never read
[INFO] [stdout]    --> tests/integration_tests.rs:168:21
[INFO] [stdout]     |
[INFO] [stdout] 168 |                     all_successful = false;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `expected_elements` and `description` are never read
[INFO] [stdout]   --> tests/test_utils.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct TestDocument {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub expected_elements: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub expected_pages: usize,
[INFO] [stdout] 18 |     pub description: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TestDocument` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `document_size` is never read
[INFO] [stdout]   --> tests/test_utils.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct PerformanceResult {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub document_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PerformanceResult` 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 `assert_valid_pdf` is never used
[INFO] [stdout]    --> tests/test_utils.rs:202:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl TestAssertions {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn assert_valid_pdf(pdf_data: &[u8]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimal_test_document` is never used
[INFO] [stdout]    --> tests/test_utils.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn minimal_test_document() -> TestDocument {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARSING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:243:15
[INFO] [stdout]     |
[INFO] [stdout] 243 |     pub const PARSING_TARGET: Duration = Duration::from_millis(10);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STYLING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:244:15
[INFO] [stdout]     |
[INFO] [stdout] 244 |     pub const STYLING_TARGET: Duration = Duration::from_millis(5);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAYOUT_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:245:15
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub const LAYOUT_TARGET: Duration = Duration::from_millis(20);
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDERING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 |     pub const RENDERING_TARGET: Duration = Duration::from_millis(50);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MEMORY_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:249:15
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub const MEMORY_TARGET: usize = 50 * 1024 * 1024; // 50MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DocumentBuilder`
[INFO] [stdout]  --> tests/test_utils.rs:5:43
[INFO] [stdout]   |
[INFO] [stdout] 5 | use webpdf::document::{DocumentProcessor, DocumentBuilder};
[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: `std::time::Duration`
[INFO] [stdout]   --> benches/performance_benchmarks.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `expected_elements` and `description` are never read
[INFO] [stdout]   --> tests/test_utils.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct TestDocument {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub expected_elements: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub expected_pages: usize,
[INFO] [stdout] 18 |     pub description: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TestDocument` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `memory_usage`, `document_size`, and `pdf_size` are never read
[INFO] [stdout]   --> tests/test_utils.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct PerformanceResult {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub memory_usage: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 27 |     pub success: bool,
[INFO] [stdout] 28 |     pub document_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub pdf_size: usize,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PerformanceResult` 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 `TestProcessor` is never constructed
[INFO] [stdout]   --> tests/test_utils.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct TestProcessor {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/test_utils.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl TestProcessor {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 111 |     /// Create a new test processor
[INFO] [stdout] 112 |     pub fn new() -> WebPdfResult<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn with_config(config: Config) -> WebPdfResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn process_with_measurement(&mut self, test_doc: &TestDocument) -> WebPdfResult<PerformanceResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn get_memory_usage(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn performance_results(&self) -> &[PerformanceResult] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn clear_results(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn metrics(&self) -> &PipelineMetrics {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `assert_performance_bounds` and `assert_pipeline_metrics` are never used
[INFO] [stdout]    --> tests/test_utils.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl TestAssertions {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] 182 |     /// Assert that performance is within acceptable bounds
[INFO] [stdout] 183 |     pub fn assert_performance_bounds(result: &PerformanceResult, max_duration: Duration, max_memory: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn assert_pipeline_metrics(metrics: &PipelineMetrics) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimal_test_document` is never used
[INFO] [stdout]    --> tests/test_utils.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn minimal_test_document() -> TestDocument {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARSING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:243:15
[INFO] [stdout]     |
[INFO] [stdout] 243 |     pub const PARSING_TARGET: Duration = Duration::from_millis(10);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STYLING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:244:15
[INFO] [stdout]     |
[INFO] [stdout] 244 |     pub const STYLING_TARGET: Duration = Duration::from_millis(5);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAYOUT_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:245:15
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub const LAYOUT_TARGET: Duration = Duration::from_millis(20);
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDERING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 |     pub const RENDERING_TARGET: Duration = Duration::from_millis(50);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `END_TO_END_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:247:15
[INFO] [stdout]     |
[INFO] [stdout] 247 |     pub const END_TO_END_TARGET: Duration = Duration::from_millis(100);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MEMORY_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:249:15
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub const MEMORY_TARGET: usize = 50 * 1024 * 1024; // 50MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIMPLE_DOC_MEMORY` is never used
[INFO] [stdout]    --> tests/test_utils.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 |     pub const SIMPLE_DOC_MEMORY: usize = 5 * 1024 * 1024; // 5MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COMPLEX_DOC_MEMORY` is never used
[INFO] [stdout]    --> tests/test_utils.rs:251:15
[INFO] [stdout]     |
[INFO] [stdout] 251 |     pub const COMPLEX_DOC_MEMORY: usize = 20 * 1024 * 1024; // 20MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `WebPdfResult`
[INFO] [stdout]   --> tests/legacy_compat_tests.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 | use webpdf::{Config, WebPdfResult};
[INFO] [stdout]    |                      ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::Document`: Use DocumentProcessor or DocumentBuilder instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 |     core::{Document, Pipeline, LegacyConfigBuilder, html_to_pdf, html_css_to_pdf},
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::Pipeline`: Use DocumentPipeline or DocumentBuilder instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 |     core::{Document, Pipeline, LegacyConfigBuilder, html_to_pdf, html_css_to_pdf},
[INFO] [stdout]   |                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::core::LegacyConfigBuilder`: Use Config::builder() instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:7:32
[INFO] [stdout]   |
[INFO] [stdout] 7 |     core::{Document, Pipeline, LegacyConfigBuilder, html_to_pdf, html_css_to_pdf},
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `webpdf::legacy_compat::core::html_to_pdf`: Use DocumentBuilder::new().html().build() instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:7:53
[INFO] [stdout]   |
[INFO] [stdout] 7 |     core::{Document, Pipeline, LegacyConfigBuilder, html_to_pdf, html_css_to_pdf},
[INFO] [stdout]   |                                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `webpdf::legacy_compat::core::html_css_to_pdf`: Use DocumentBuilder::new().html().css().build() instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:7:66
[INFO] [stdout]   |
[INFO] [stdout] 7 |     core::{Document, Pipeline, LegacyConfigBuilder, html_to_pdf, html_css_to_pdf},
[INFO] [stdout]   |                                                                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::EmbeddedDocument`: Use DocumentBuilder instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 |     embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel},
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::EmbeddedDocumentBuilder`: Use DocumentBuilder instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 |     embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel},
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated enum `webpdf::legacy_compat::ValidationLevel`: Validation is always enabled in the new architecture
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:8:59
[INFO] [stdout]   |
[INFO] [stdout] 8 |     embedded::{EmbeddedDocument, EmbeddedDocumentBuilder, ValidationLevel},
[INFO] [stdout]   |                                                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::LegacyFontManager`: Use render::text::fonts::FontManager instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 |     text::{FontManager, Typography, TextLayout, TextColor, FontWeight, FontVariant, TextBounds},
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::Typography`: Use DocumentBuilder font settings instead
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:9:25
[INFO] [stdout]   |
[INFO] [stdout] 9 |     text::{FontManager, Typography, TextLayout, TextColor, FontWeight, FontVariant, TextBounds},
[INFO] [stdout]   |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `webpdf::legacy_compat::LegacyTextLayout`: Text layout is handled automatically in the new system
[INFO] [stdout]  --> tests/legacy_compat_tests.rs:9:37
[INFO] [stdout]   |
[INFO] [stdout] 9 |     text::{FontManager, Typography, TextLayout, TextColor, FontWeight, FontVariant, TextBounds},
[INFO] [stdout]   |                                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `html`
[INFO] [stdout]    --> tests/module_integration_tests.rs:484:9
[INFO] [stdout]     |
[INFO] [stdout] 484 |     let html = r#"
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_html`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `expected_elements` and `description` are never read
[INFO] [stdout]   --> tests/test_utils.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct TestDocument {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub expected_elements: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub expected_pages: usize,
[INFO] [stdout] 18 |     pub description: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TestDocument` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `memory_usage`, `document_size`, and `pdf_size` are never read
[INFO] [stdout]   --> tests/test_utils.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct PerformanceResult {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub memory_usage: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 27 |     pub success: bool,
[INFO] [stdout] 28 |     pub document_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub pdf_size: usize,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PerformanceResult` 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 `TestProcessor` is never constructed
[INFO] [stdout]   --> tests/test_utils.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct TestProcessor {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/test_utils.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl TestProcessor {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 111 |     /// Create a new test processor
[INFO] [stdout] 112 |     pub fn new() -> WebPdfResult<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn with_config(config: Config) -> WebPdfResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn process_with_measurement(&mut self, test_doc: &TestDocument) -> WebPdfResult<PerformanceResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn get_memory_usage(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn performance_results(&self) -> &[PerformanceResult] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn clear_results(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn metrics(&self) -> &PipelineMetrics {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `assert_performance_bounds` and `assert_pipeline_metrics` are never used
[INFO] [stdout]    --> tests/test_utils.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl TestAssertions {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] 182 |     /// Assert that performance is within acceptable bounds
[INFO] [stdout] 183 |     pub fn assert_performance_bounds(result: &PerformanceResult, max_duration: Duration, max_memory: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn assert_pipeline_metrics(metrics: &PipelineMetrics) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimal_test_document` is never used
[INFO] [stdout]    --> tests/test_utils.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn minimal_test_document() -> TestDocument {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARSING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:243:15
[INFO] [stdout]     |
[INFO] [stdout] 243 |     pub const PARSING_TARGET: Duration = Duration::from_millis(10);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STYLING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:244:15
[INFO] [stdout]     |
[INFO] [stdout] 244 |     pub const STYLING_TARGET: Duration = Duration::from_millis(5);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAYOUT_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:245:15
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub const LAYOUT_TARGET: Duration = Duration::from_millis(20);
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDERING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 |     pub const RENDERING_TARGET: Duration = Duration::from_millis(50);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `END_TO_END_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:247:15
[INFO] [stdout]     |
[INFO] [stdout] 247 |     pub const END_TO_END_TARGET: Duration = Duration::from_millis(100);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MEMORY_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:249:15
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub const MEMORY_TARGET: usize = 50 * 1024 * 1024; // 50MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIMPLE_DOC_MEMORY` is never used
[INFO] [stdout]    --> tests/test_utils.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 |     pub const SIMPLE_DOC_MEMORY: usize = 5 * 1024 * 1024; // 5MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COMPLEX_DOC_MEMORY` is never used
[INFO] [stdout]    --> tests/test_utils.rs:251:15
[INFO] [stdout]     |
[INFO] [stdout] 251 |     pub const COMPLEX_DOC_MEMORY: usize = 20 * 1024 * 1024; // 20MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/legacy_compat_tests.rs:346:9
[INFO] [stdout]     |
[INFO] [stdout] 346 |     let mut font_mgr = FontManager::new().expect("Failed to create font manager");
[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: fields `expected_elements` and `description` are never read
[INFO] [stdout]   --> tests/test_utils.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct TestDocument {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub expected_elements: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub expected_pages: usize,
[INFO] [stdout] 18 |     pub description: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TestDocument` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `memory_usage`, `document_size`, and `pdf_size` are never read
[INFO] [stdout]   --> tests/test_utils.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct PerformanceResult {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub memory_usage: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 27 |     pub success: bool,
[INFO] [stdout] 28 |     pub document_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub pdf_size: usize,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PerformanceResult` 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 `TestProcessor` is never constructed
[INFO] [stdout]   --> tests/test_utils.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct TestProcessor {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/test_utils.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl TestProcessor {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 111 |     /// Create a new test processor
[INFO] [stdout] 112 |     pub fn new() -> WebPdfResult<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn with_config(config: Config) -> WebPdfResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn process_with_measurement(&mut self, test_doc: &TestDocument) -> WebPdfResult<PerformanceResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn get_memory_usage(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn performance_results(&self) -> &[PerformanceResult] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn clear_results(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn metrics(&self) -> &PipelineMetrics {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `assert_performance_bounds` and `assert_pipeline_metrics` are never used
[INFO] [stdout]    --> tests/test_utils.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 181 | impl TestAssertions {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout] 182 |     /// Assert that performance is within acceptable bounds
[INFO] [stdout] 183 |     pub fn assert_performance_bounds(result: &PerformanceResult, max_duration: Duration, max_memory: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn assert_pipeline_metrics(metrics: &PipelineMetrics) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimal_test_document` is never used
[INFO] [stdout]    --> tests/test_utils.rs:264:8
[INFO] [stdout]     |
[INFO] [stdout] 264 | pub fn minimal_test_document() -> TestDocument {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PARSING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:243:15
[INFO] [stdout]     |
[INFO] [stdout] 243 |     pub const PARSING_TARGET: Duration = Duration::from_millis(10);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STYLING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:244:15
[INFO] [stdout]     |
[INFO] [stdout] 244 |     pub const STYLING_TARGET: Duration = Duration::from_millis(5);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAYOUT_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:245:15
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub const LAYOUT_TARGET: Duration = Duration::from_millis(20);
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDERING_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:246:15
[INFO] [stdout]     |
[INFO] [stdout] 246 |     pub const RENDERING_TARGET: Duration = Duration::from_millis(50);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `END_TO_END_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:247:15
[INFO] [stdout]     |
[INFO] [stdout] 247 |     pub const END_TO_END_TARGET: Duration = Duration::from_millis(100);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MEMORY_TARGET` is never used
[INFO] [stdout]    --> tests/test_utils.rs:249:15
[INFO] [stdout]     |
[INFO] [stdout] 249 |     pub const MEMORY_TARGET: usize = 50 * 1024 * 1024; // 50MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SIMPLE_DOC_MEMORY` is never used
[INFO] [stdout]    --> tests/test_utils.rs:250:15
[INFO] [stdout]     |
[INFO] [stdout] 250 |     pub const SIMPLE_DOC_MEMORY: usize = 5 * 1024 * 1024; // 5MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COMPLEX_DOC_MEMORY` is never used
[INFO] [stdout]    --> tests/test_utils.rs:251:15
[INFO] [stdout]     |
[INFO] [stdout] 251 |     pub const COMPLEX_DOC_MEMORY: usize = 20 * 1024 * 1024; // 20MB
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> examples/validation/runner.rs:285:40
[INFO] [stdout]     |
[INFO] [stdout] 285 |                 *features_tested.entry(feature.clone()).or_insert(0) += 1;
[INFO] [stdout]     |                                        ^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]  --> examples/validation/performance_check.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io::{BufRead, BufReader};
[INFO] [stdout]   |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `features_str` does not live long enough
[INFO] [stdout]    --> examples/validation/compile_check.rs:177:23
[INFO] [stdout]     |
[INFO] [stdout] 172 |         let mut args = vec!["check", "--example", example_name, "--message-format=json"];
[INFO] [stdout]     |             -------- variable `args` declared here
[INFO] [stdout] ...
[INFO] [stdout] 176 |             let features_str = features.join(",");
[INFO] [stdout]     |                 ------------ binding `features_str` declared here
[INFO] [stdout] 177 |             args.push(&features_str);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^ borrowed value does not live long enough
[INFO] [stdout] 178 |         }
[INFO] [stdout]     |         - `features_str` dropped here while still borrowed
[INFO] [stdout] ...
[INFO] [stdout] 181 |             .args(&args)
[INFO] [stdout]     |                   ----- borrow later used here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `args` is a collection that stores borrowed references, but `features_str` does not live long enough to be stored in it
[INFO] [stdout]     = help: buffer reuse with borrowed references requires unsafe code or restructuring
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0502]: cannot borrow `result` as mutable because it is also borrowed as immutable
[INFO] [stdout]    --> examples/validation/output_check.rs:155:82
[INFO] [stdout]     |
[INFO] [stdout] 155 |                     self.validate_content(&result.content_analysis, expectation, &mut result);
[INFO] [stdout]     |                          ---------------- ------------------------               ^^^^^^^^^^^ mutable borrow occurs here
[INFO] [stdout]     |                          |                |
[INFO] [stdout]     |                          |                immutable borrow occurs here
[INFO] [stdout]     |                          immutable borrow later used by call
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `example_name`
[INFO] [stdout]    --> examples/validation/performance_check.rs:337:72
[INFO] [stdout]     |
[INFO] [stdout] 337 | ...&PerformanceResult, example_name: &str) -> Result<ThroughputMetrics, Box<dyn std::error::Error>> {
[INFO] [stdout]     |                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_example_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*grade` which is behind a shared reference
[INFO] [stdout]    --> examples/validation/performance_check.rs:502:14
[INFO] [stdout]     |
[INFO] [stdout] 502 |             (*grade, count)
[INFO] [stdout]     |              ^^^^^^ move occurs because `*grade` has type `PerformanceGrade`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 502 -             (*grade, count)
[INFO] [stdout] 502 +             (grade.clone(), count)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0432, E0502, E0507, E0597.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `webpdf` (example "validation") due to 5 previous errors; 4 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "52d8e8c77934ac46f8f5668e34515bad2719f2ee603cc1bf1937a86a4423aa16", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "52d8e8c77934ac46f8f5668e34515bad2719f2ee603cc1bf1937a86a4423aa16", kill_on_drop: false }`
[INFO] [stdout] 52d8e8c77934ac46f8f5668e34515bad2719f2ee603cc1bf1937a86a4423aa16
