[INFO] cloning repository https://github.com/ref42/seex
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ref42/seex" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fref42%2Fseex", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fref42%2Fseex'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4492eae798d2908049f5a26fe55b718878909d34
[INFO] checking ref42/seex/4492eae798d2908049f5a26fe55b718878909d34 against 1ed2df61a19042f231709eb05d032ae9e2cb2084 for pr-160235
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fref42%2Fseex" "/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/ref42/seex
[INFO] finished tweaking git repo https://github.com/ref42/seex
[INFO] tweaked toml for git repo https://github.com/ref42/seex written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ref42/seex on toolchain 1ed2df61a19042f231709eb05d032ae9e2cb2084
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1ed2df61a19042f231709eb05d032ae9e2cb2084" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ref42/seex 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" "+1ed2df61a19042f231709eb05d032ae9e2cb2084" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ipnet v2.12.1
[INFO] [stderr]   Downloaded dark-light v2.0.0
[INFO] [stderr]   Downloaded accesskit_macos v0.26.3
[INFO] [stderr]   Downloaded value-bag v1.13.2
[INFO] [stderr]   Downloaded accesskit_consumer v0.38.0
[INFO] [stderr]   Downloaded zbus_macros v5.18.0
[INFO] [stderr]   Downloaded winresource v0.1.31
[INFO] [stderr]   Downloaded webbrowser v1.2.4
[INFO] [stderr]   Downloaded clap v4.6.5
[INFO] [stderr]   Downloaded cfb v0.14.0
[INFO] [stderr]   Downloaded ashpd v0.10.3
[INFO] [stderr]   Downloaded zbus v5.18.0
[INFO] [stderr]   Downloaded clap_builder v4.6.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737
[INFO] running `Command { std: "docker" "start" "d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737" "/opt/rustwide/cargo-home/bin/cargo" "+1ed2df61a19042f231709eb05d032ae9e2cb2084" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737" "/opt/rustwide/cargo-home/bin/cargo" "+1ed2df61a19042f231709eb05d032ae9e2cb2084" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking value-bag v1.13.2
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling cc v1.4.0
[INFO] [stderr]     Checking futures-io v0.3.33
[INFO] [stderr]    Compiling wayland-sys v0.31.11
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]     Checking proc-macro2 v1.0.107
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking quote v1.0.47
[INFO] [stderr]    Compiling endi v1.1.1
[INFO] [stderr]     Checking piper v0.2.5
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]     Checking winnow v1.0.4
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling wayland-backend v0.3.16
[INFO] [stderr]     Checking async-executor v1.14.0
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking futures-task v0.3.33
[INFO] [stderr]    Compiling khronos_api v3.1.0
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]    Compiling aws-lc-sys v0.43.0
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking arrayvec v0.7.8
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]     Checking polycool v0.4.0
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling aws-lc-rs v1.17.3
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking async-io v2.6.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]     Checking wayland-client v0.31.15
[INFO] [stderr]     Checking async-signal v0.2.14
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]     Checking async-process v2.5.0
[INFO] [stderr]    Compiling serde_repr v0.1.21
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling bytemuck_derive v1.11.0
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking wayland-protocols v0.32.13
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling async-recursion v1.1.1
[INFO] [stderr]     Checking thiserror v2.0.19
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking futures-util v0.3.33
[INFO] [stderr]    Compiling zvariant_utils v3.5.0
[INFO] [stderr]     Checking bytemuck v1.25.2
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]    Compiling zvariant_derive v5.13.1
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking color v0.3.3
[INFO] [stderr]     Checking font-types v0.11.3
[INFO] [stderr]    Compiling zvariant v5.13.1
[INFO] [stderr]     Checking wayland-cursor v0.31.14
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking kurbo v0.13.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking http v1.5.0
[INFO] [stderr]     Checking euclid v0.22.14
[INFO] [stderr]    Compiling phf_shared v0.13.1
[INFO] [stderr]     Checking accesskit v0.24.1
[INFO] [stderr]    Compiling adler2 v2.0.1
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]     Checking guillotiere v0.7.0
[INFO] [stderr]    Compiling phf_generator v0.13.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]     Checking peniko v0.6.1
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking read-fonts v0.39.2
[INFO] [stderr]    Compiling core_maths v0.1.1
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling zbus_names v4.3.4
[INFO] [stderr]     Checking fearless_simd v0.4.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.12
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling zbus_macros v5.18.0
[INFO] [stderr]    Compiling zbus_xml v5.2.1
[INFO] [stderr]    Compiling zbus-lockstep v0.5.2
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.5.2
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]    Compiling float-cmp v0.9.0
[INFO] [stderr]    Compiling unicode-general-category v1.1.0
[INFO] [stderr]    Compiling strict-num v0.1.1
[INFO] [stderr]    Compiling slotmap v1.1.1
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling ttf-parser v0.25.1
[INFO] [stderr]    Compiling phf_macros v0.13.1
[INFO] [stderr]     Checking http-body v1.1.0
[INFO] [stderr]     Checking emath v0.35.0
[INFO] [stderr]    Compiling winit v0.30.13
[INFO] [stderr]     Checking zbus v5.18.0
[INFO] [stderr]    Compiling roxmltree v0.20.0
[INFO] [stderr]     Checking futures-sink v0.3.33
[INFO] [stderr]    Compiling arrayref v0.3.9
[INFO] [stderr]     Checking vello_common v0.0.9
[INFO] [stderr]    Compiling tinyvec_macros v0.1.1
[INFO] [stderr]    Compiling rustls v0.23.43
[INFO] [stderr]    Compiling tinyvec v1.12.0
[INFO] [stderr]    Compiling fontconfig-parser v0.5.8
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking vello_cpu v0.0.9
[INFO] [stderr]     Checking skrifa v0.42.1
[INFO] [stderr]     Checking harfrust v0.7.0
[INFO] [stderr]    Compiling tiny-skia-path v0.11.4
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking phf v0.13.1
[INFO] [stderr]     Checking accesskit_consumer v0.36.0
[INFO] [stderr]     Checking ecolor v0.35.0
[INFO] [stderr]    Compiling kurbo v0.11.3
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.12
[INFO] [stderr]     Checking calloop v0.14.4
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling memmap2 v0.9.11
[INFO] [stderr]    Compiling unicode-ccc v0.4.0
[INFO] [stderr]    Compiling unicode-properties v0.1.4
[INFO] [stderr]     Checking zune-core v0.5.1
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]     Checking either v1.17.0
[INFO] [stderr]     Checking epaint_default_fonts v0.35.0
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]    Compiling unicode-bidi-mirroring v0.4.0
[INFO] [stderr]    Compiling unicode-script v0.5.8
[INFO] [stderr]     Checking epaint v0.35.0
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking zune-jpeg v0.5.15
[INFO] [stderr]    Compiling rustybuzz v0.20.1
[INFO] [stderr]    Compiling smithay-client-toolkit v0.20.0
[INFO] [stderr]    Compiling png v0.17.16
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking atspi-common v0.13.0
[INFO] [stderr]    Compiling fontdb v0.23.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]    Compiling svgtypes v0.15.3
[INFO] [stderr]     Checking h2 v0.4.15
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.12
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling glutin v0.32.3
[INFO] [stderr]    Compiling simplecss v0.2.2
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling pico-args v0.5.0
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling imagesize v0.13.0
[INFO] [stderr]    Compiling unicode-vo v0.1.0
[INFO] [stderr]    Compiling xmlwriter v0.1.0
[INFO] [stderr]    Compiling weezl v0.1.12
[INFO] [stderr]    Compiling zune-core v0.4.12
[INFO] [stderr]    Compiling data-url v0.3.2
[INFO] [stderr]    Compiling usvg v0.45.1
[INFO] [stderr]    Compiling zune-jpeg v0.4.21
[INFO] [stderr]    Compiling gif v0.13.3
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]    Compiling image-webp v0.2.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking atspi-proxies v0.13.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.18.1
[INFO] [stderr]     Checking hyper v1.11.0
[INFO] [stderr]    Compiling tiny-skia v0.11.4
[INFO] [stderr]     Checking egui v0.35.0
[INFO] [stderr]    Compiling rgb v0.8.53
[INFO] [stderr]     Checking atspi v0.29.0
[INFO] [stderr]     Checking accesskit_unix v0.21.1
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]     Checking event-listener v2.5.3
[INFO] [stderr]     Checking ipnet v2.12.1
[INFO] [stderr]     Checking rustls-native-certs v0.8.4
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]    Compiling resvg v0.45.1
[INFO] [stderr]     Checking rand v0.8.7
[INFO] [stderr]     Checking webbrowser v1.2.4
[INFO] [stderr]     Checking async-global-executor v2.4.1
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]     Checking async-fs v2.2.0
[INFO] [stderr]     Checking kv-log-macro v1.0.7
[INFO] [stderr]     Checking glow v0.17.0
[INFO] [stderr]    Compiling rfd v0.17.2
[INFO] [stderr]    Compiling dark-light v2.0.0
[INFO] [stderr]     Checking async-std v1.13.2
[INFO] [stderr]     Checking clap_builder v4.6.5
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking ashpd v0.10.3
[INFO] [stderr]    Compiling seex v1.1.2 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]     Checking accesskit_winit v0.32.2
[INFO] [stderr]     Checking serde_json v1.0.151
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking http-body-util v0.1.4
[INFO] [stderr]     Checking egui_glow v0.35.0
[INFO] [stderr]     Checking egui-winit v0.35.0
[INFO] [stderr]     Checking pollster v0.4.0
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking eframe v0.35.0
[INFO] [stderr]     Checking directories v6.0.0
[INFO] [stderr]     Checking cfb v0.14.0
[INFO] [stderr]     Checking clap v4.6.5
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.4
[INFO] [stdout] warning: unused import: `svg_parser::parse_svg_path`
[INFO] [stdout]  --> src/easyeda/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use svg_parser::parse_svg_path;
[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: `KiTrack`
[INFO] [stdout]   --> src/kicad/mod.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 |     KiPad, KiText, KiTrack, PadShape, PadType,
[INFO] [stdout]    |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KicadExportedComponent`, `KicadSingleOptions`, and `export_kicad_single`
[INFO] [stdout]   --> src/kicad/mod.rs:33:43
[INFO] [stdout]    |
[INFO] [stdout] 33 |     KicadBatchOptions, KicadBatchSummary, KicadExportedComponent, KicadSingleOptions,
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     export_kicad_batch, export_kicad_single,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `svg_parser::parse_svg_path`
[INFO] [stdout]  --> src/easyeda/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use svg_parser::parse_svg_path;
[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: `KiTrack`
[INFO] [stdout]   --> src/kicad/mod.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 |     KiPad, KiText, KiTrack, PadShape, PadType,
[INFO] [stdout]    |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KicadExportedComponent`, `KicadSingleOptions`, and `export_kicad_single`
[INFO] [stdout]   --> src/kicad/mod.rs:33:43
[INFO] [stdout]    |
[INFO] [stdout] 33 |     KicadBatchOptions, KicadBatchSummary, KicadExportedComponent, KicadSingleOptions,
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     export_kicad_batch, export_kicad_single,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]   --> src/kicad/model_converter.rs:99:21
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let _ = counter.fetch_update(Ordering::Relaxed, Ordering::Relaxed, |value| {
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]    |
[INFO] [stdout] 99 -     let _ = counter.fetch_update(Ordering::Relaxed, Ordering::Relaxed, |value| {
[INFO] [stdout] 99 +     let _ = counter.try_update(Ordering::Relaxed, Ordering::Relaxed, |value| {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::sync::atomic::Atomic::<usize>::fetch_update`: renamed to `try_update` for consistency
[INFO] [stdout]   --> src/kicad/model_converter.rs:99:21
[INFO] [stdout]    |
[INFO] [stdout] 99 |     let _ = counter.fetch_update(Ordering::Relaxed, Ordering::Relaxed, |value| {
[INFO] [stdout]    |                     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated method
[INFO] [stdout]    |
[INFO] [stdout] 99 -     let _ = counter.fetch_update(Ordering::Relaxed, Ordering::Relaxed, |value| {
[INFO] [stdout] 99 +     let _ = counter.try_update(Ordering::Relaxed, Ordering::Relaxed, |value| {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAYER_MECHANICAL_8` is never used
[INFO] [stdout]   --> src/altium/pcblib.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const LAYER_MECHANICAL_8: u8 = 64;
[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 `unique_id` is never read
[INFO] [stdout]   --> src/altium/pcblib.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct PcbLibrary {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 56 |     pub unique_id: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PcbLibrary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_schlib_from_payload` is never used
[INFO] [stdout]   --> src/altium/schlib.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn write_schlib_from_payload(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_schlib_from_payload_with_metadata` is never used
[INFO] [stdout]   --> src/altium/schlib.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn write_schlib_from_payload_with_metadata(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_component_from_payload` is never used
[INFO] [stdout]   --> src/altium/schlib.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn build_component_from_payload(payload: &Value, component_name: &str) -> Result<Component> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_component_from_payload_with_metadata` is never used
[INFO] [stdout]   --> src/altium/schlib.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn build_component_from_payload_with_metadata(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BundleManifest` is never constructed
[INFO] [stdout]   --> src/altium/workflow.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct BundleManifest {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `download_obj` is never used
[INFO] [stdout]   --> src/altium/workflow.rs:52:14
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub async fn download_obj(
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_easyeda_sources` is never used
[INFO] [stdout]   --> src/altium/workflow.rs:78:14
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub async fn export_easyeda_sources(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_schlib_component_from_detail` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:194:15
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub(crate) fn build_schlib_component_from_detail(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_pcblib_library_for_item` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:240:14
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub async fn build_pcblib_library_for_item(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_schlib_component_for_item` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:252:14
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub async fn build_schlib_component_for_item(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_schlib_component_for_item_with_metadata` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:270:14
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub async fn build_schlib_component_for_item_with_metadata(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_schlib` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:314:14
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub async fn export_schlib(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_bundle` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:378:14
[INFO] [stdout]     |
[INFO] [stdout] 378 | pub async fn export_bundle(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `V5` is never constructed
[INFO] [stdout]    --> src/cli.rs:251:5
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub enum KicadVersion {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 251 |     V5,
[INFO] [stdout]     |     ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `KicadVersion` 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: field `fill` is never read
[INFO] [stdout]    --> src/easyeda/models.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout]  97 | pub struct EeRectangle {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fill: bool,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeRectangle` 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: field `name` is never read
[INFO] [stdout]    --> src/easyeda/models.rs:178:9
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub struct EeFootprint {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] 178 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeFootprint` 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: field `net` is never read
[INFO] [stdout]    --> src/easyeda/models.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct EeTrack {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub net: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeTrack` 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: field `net` is never read
[INFO] [stdout]    --> src/easyeda/models.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct EeVia {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub net: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeVia` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `path`, `stroke_width`, and `layer` are never read
[INFO] [stdout]    --> src/easyeda/models.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub struct EeSvgNode {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 231 |     pub path: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 232 |     pub stroke_width: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 233 |     pub layer: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeSvgNode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FootprintExport`, `ModelExport`, and `InvalidVersion` are never constructed
[INFO] [stdout]   --> src/error.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum KicadError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 85 |     FootprintExport(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     ModelExport(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     InvalidVersion,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KicadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidCoordinate`, `InvalidUnit`, and `SvgParse` are never constructed
[INFO] [stdout]    --> src/error.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub enum ConversionError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout]  99 |     #[error("invalid coordinate: {0}")]
[INFO] [stdout] 100 |     InvalidCoordinate(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     InvalidUnit(String),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     SvgParse(String),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConversionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flip_y`, `normalize_to_bbox`, and `calculate_bbox` are never used
[INFO] [stdout]    --> src/kicad/converter.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl Converter {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub fn flip_y(&self, y: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub fn normalize_to_bbox(&self, coord: f64, bbox_origin: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn calculate_bbox(&self, points: &[(f64, f64)]) -> Option<(f64, f64, f64, f64)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tracks` is never read
[INFO] [stdout]  --> src/kicad/footprint.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct KiFootprint {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 5 |     pub tracks: Vec<KiTrack>,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `KiFootprint` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Connect` is never constructed
[INFO] [stdout]   --> src/kicad/footprint.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum PadType {
[INFO] [stdout]    |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Connect,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PadType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Trapezoid` and `RoundRect` are never constructed
[INFO] [stdout]   --> src/kicad/footprint.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum PadShape {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 37 |     Trapezoid,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 38 |     RoundRect,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PadShape` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `offset_x` and `offset_y` are never read
[INFO] [stdout]   --> src/kicad/footprint.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct Drill {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub offset_x: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 85 |     pub offset_y: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Drill` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start_x`, `start_y`, `end_x`, `end_y`, `width`, and `layer` are never read
[INFO] [stdout]   --> src/kicad/footprint.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct KiTrack {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 90 |     pub start_x: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 91 |     pub start_y: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 92 |     pub end_x: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 93 |     pub end_y: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 94 |     pub width: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 95 |     pub layer: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KiTrack` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lib_name`, `component_exists`, `add_component`, `update_component`, and `write_footprint` are never used
[INFO] [stdout]    --> src/kicad/library.rs:36:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl LibraryManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  36 |     pub fn new(output_path: &Path) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn lib_name(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn component_exists(&self, lib_path: &Path, component_name: &str) -> Result<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn add_component(&self, lib_path: &Path, component_data: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn update_component(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 420 |     pub fn write_footprint(&self, footprint_name: &str, data: &str) -> Result<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]   --> src/kicad/model_converter.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl ModelStageStatus {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SHALLOW_TOP_SOLID_HEIGHT_LIMIT_MM` is never used
[INFO] [stdout]  --> src/kicad/step_sanitizer.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const SHALLOW_TOP_SOLID_HEIGHT_LIMIT_MM: f64 = 0.01;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOP_SURFACE_TOLERANCE_MM` is never used
[INFO] [stdout]  --> src/kicad/step_sanitizer.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const TOP_SURFACE_TOLERANCE_MM: f64 = 0.02;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EMBEDDED_SHALLOW_SOLID_SURFACE_OFFSET_MM` is never used
[INFO] [stdout]  --> src/kicad/step_sanitizer.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const EMBEDDED_SHALLOW_SOLID_SURFACE_OFFSET_MM: f64 = 1.0;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OUTER_FACE_TOLERANCE_MM` is never used
[INFO] [stdout]  --> src/kicad/step_sanitizer.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const OUTER_FACE_TOLERANCE_MM: f64 = 0.05;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PLANAR_FACE_AXIS_ALIGNMENT_MIN` is never used
[INFO] [stdout]  --> src/kicad/step_sanitizer.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const PLANAR_FACE_AXIS_ALIGNMENT_MIN: f64 = 0.95;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_STYLE_MIN_FACES` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const LOGO_STYLE_MIN_FACES: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_STYLE_SMALL_MIN_FACES` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const LOGO_STYLE_SMALL_MIN_FACES: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_STYLE_MAX_AREA_RATIO` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const LOGO_STYLE_MAX_AREA_RATIO: f64 = 0.2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_STYLE_SMALL_MAX_AREA_RATIO` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const LOGO_STYLE_SMALL_MAX_AREA_RATIO: f64 = 0.08;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_STYLE_MIN_CONTRAST` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const LOGO_STYLE_MIN_CONTRAST: f64 = 0.4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_STYLE_PLANE_TOLERANCE_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const LOGO_STYLE_PLANE_TOLERANCE_MM: f64 = 0.02;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_STYLE_CLUSTER_GAP_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const LOGO_STYLE_CLUSTER_GAP_MM: f64 = 0.2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_SIDE_FACE_DEPTH_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const LOGO_SIDE_FACE_DEPTH_MM: f64 = 0.25;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_SIDE_FACE_GAP_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const LOGO_SIDE_FACE_GAP_MM: f64 = 0.08;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_SIDE_FACE_COLOR_TOLERANCE` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const LOGO_SIDE_FACE_COLOR_TOLERANCE: f64 = 0.08;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GEOMETRY_LOGO_MIN_FACES` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const GEOMETRY_LOGO_MIN_FACES: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GEOMETRY_LOGO_MAX_AREA_RATIO` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const GEOMETRY_LOGO_MAX_AREA_RATIO: f64 = 0.12;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GEOMETRY_LOGO_OUTER_TOLERANCE_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const GEOMETRY_LOGO_OUTER_TOLERANCE_MM: f64 = 0.08;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GEOMETRY_LOGO_BACKGROUND_DEPTH_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const GEOMETRY_LOGO_BACKGROUND_DEPTH_MM: f64 = 0.7;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GEOMETRY_LOGO_BACKGROUND_TOLERANCE_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const GEOMETRY_LOGO_BACKGROUND_TOLERANCE_MM: f64 = 0.2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GEOMETRY_LOGO_SOLID_FALLBACK_MIN_FACES` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const GEOMETRY_LOGO_SOLID_FALLBACK_MIN_FACES: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FACE_LOGO_SOLID_FALLBACK_MIN_FACES` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const FACE_LOGO_SOLID_FALLBACK_MIN_FACES: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOTTOM_PAD_FEATURE_HEIGHT_LIMIT_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const BOTTOM_PAD_FEATURE_HEIGHT_LIMIT_MM: f64 = 0.25;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOTTOM_LOGO_EDGE_CLEARANCE_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const BOTTOM_LOGO_EDGE_CLEARANCE_MM: f64 = 0.4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOTTOM_LOGO_EDGE_CLEARANCE_RATIO` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const BOTTOM_LOGO_EDGE_CLEARANCE_RATIO: f64 = 0.12;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_COVER_PATCH_MARGIN_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const LOGO_COVER_PATCH_MARGIN_MM: f64 = 0.04;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_COVER_PATCH_OFFSET_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const LOGO_COVER_PATCH_OFFSET_MM: f64 = 0.006;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_COVER_PATCH_THICKNESS_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const LOGO_COVER_PATCH_THICKNESS_MM: f64 = 0.04;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOGO_COVER_PATCH_DEDUP_TOLERANCE_MM` is never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:33:7
[INFO] [stdout]    |
[INFO] [stdout] 33 | const LOGO_COVER_PATCH_DEDUP_TOLERANCE_MM: f64 = 0.001;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BoundingBox` is never constructed
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct BoundingBox {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_point`, `union`, `height_z`, `axis_min`, and `axis_max` are never used
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl BoundingBox {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 46 |     fn from_point(point: [f64; 3]) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     fn union(self, other: Self) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     fn height_z(self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn axis_min(self, axis: usize) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn axis_max(self, axis: usize) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StepEntity` is never constructed
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | struct StepEntity {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StepSanitizeStats` is never constructed
[INFO] [stdout]   --> src/kicad/step_sanitizer.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct StepSanitizeStats {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OuterSide` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:106:6
[INFO] [stdout]     |
[INFO] [stdout] 106 | enum OuterSide {
[INFO] [stdout]     |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlanarFaceInfo` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | struct PlanarFaceInfo {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FaceStyleInfo` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:118:8
[INFO] [stdout]     |
[INFO] [stdout] 118 | struct FaceStyleInfo {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FaceStyleGroup` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct FaceStyleGroup {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AnyFaceStyleInfo` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout] 141 | struct AnyFaceStyleInfo {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeometryLogoCluster` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:149:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | struct GeometryLogoCluster {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SolidStyleInfo` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 156 | struct SolidStyleInfo {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoverPatch` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:162:8
[INFO] [stdout]     |
[INFO] [stdout] 162 | struct CoverPatch {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ColorKey` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:168:8
[INFO] [stdout]     |
[INFO] [stdout] 168 | struct ColorKey([i32; 3]);
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StyleRewritePlan` is never constructed
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | struct StyleRewritePlan {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sanitize_step_model` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:177:8
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub fn sanitize_step_model(step_data: &[u8]) -> Result<(Vec<u8>, StepSanitizeStats)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_entities` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:302:4
[INFO] [stdout]     |
[INFO] [stdout] 302 | fn parse_entities(step_data: &[u8]) -> Vec<StepEntity> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_refs` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:368:4
[INFO] [stdout]     |
[INFO] [stdout] 368 | fn parse_refs(body: &[u8]) -> Vec<usize> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bounds_for_entity` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:397:4
[INFO] [stdout]     |
[INFO] [stdout] 397 | fn bounds_for_entity(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_cartesian_point` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:437:4
[INFO] [stdout]     |
[INFO] [stdout] 437 | fn parse_cartesian_point(body: &[u8]) -> Option<[f64; 3]> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_shallow_top_marking` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:457:4
[INFO] [stdout]     |
[INFO] [stdout] 457 | fn is_shallow_top_marking(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_xy` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:480:4
[INFO] [stdout]     |
[INFO] [stdout] 480 | fn contains_xy(outer: BoundingBox, inner: BoundingBox, tolerance: f64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_logo_style_replacements` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:487:4
[INFO] [stdout]     |
[INFO] [stdout] 487 | fn collect_logo_style_replacements(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_logo_candidate_group` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:603:4
[INFO] [stdout]     |
[INFO] [stdout] 603 | fn is_logo_candidate_group(candidate: &FaceStyleGroup, solid_bounds: BoundingBox) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_coplanar_surface_logo_candidate_group` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:623:4
[INFO] [stdout]     |
[INFO] [stdout] 623 | fn is_coplanar_surface_logo_candidate_group(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expanded_logo_member_indices` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:654:4
[INFO] [stdout]     |
[INFO] [stdout] 654 | fn expanded_logo_member_indices(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_connected_logo_neighbor` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:688:4
[INFO] [stdout]     |
[INFO] [stdout] 688 | fn is_connected_logo_neighbor(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_within_logo_depth` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:702:4
[INFO] [stdout]     |
[INFO] [stdout] 702 | fn is_within_logo_depth(candidate: &FaceStyleGroup, bbox: BoundingBox) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_geometry_logo_replacements` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:724:4
[INFO] [stdout]     |
[INFO] [stdout] 724 | fn collect_geometry_logo_replacements(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_disconnected_style_group_aggregates` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:811:4
[INFO] [stdout]     |
[INFO] [stdout] 811 | fn build_disconnected_style_group_aggregates(groups: &[FaceStyleGroup]) -> Vec<FaceStyleGroup> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_coplanar_style_groups` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:866:4
[INFO] [stdout]     |
[INFO] [stdout] 866 | fn build_coplanar_style_groups(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_disconnected_geometry_logo_aggregates` is never used
[INFO] [stdout]    --> src/kicad/step_sanitizer.rs:947:4
[INFO] [stdout]     |
[INFO] [stdout] 947 | fn build_disconnected_geometry_logo_aggregates(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_supported_logo_side` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1005:4
[INFO] [stdout]      |
[INFO] [stdout] 1005 | fn is_supported_logo_side(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nearest_side_for_axis` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1024:4
[INFO] [stdout]      |
[INFO] [stdout] 1024 | fn nearest_side_for_axis(axis: usize, coordinate: f64, solid_bounds: BoundingBox) -> OuterSide {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_central_bottom_logo_candidate` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1035:4
[INFO] [stdout]      |
[INFO] [stdout] 1035 | fn is_central_bottom_logo_candidate(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cover_patch_for_bbox` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1048:4
[INFO] [stdout]      |
[INFO] [stdout] 1048 | fn cover_patch_for_bbox(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `push_cover_patch` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1090:4
[INFO] [stdout]      |
[INFO] [stdout] 1090 | fn push_cover_patch(plan: &mut StyleRewritePlan, patch: CoverPatch) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cover_patches_match` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1102:4
[INFO] [stdout]      |
[INFO] [stdout] 1102 | fn cover_patches_match(left: CoverPatch, right: CoverPatch) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `thinnest_axis` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1122:4
[INFO] [stdout]      |
[INFO] [stdout] 1122 | fn thinnest_axis(bounds: BoundingBox) -> usize {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `axis_span` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1133:4
[INFO] [stdout]      |
[INFO] [stdout] 1133 | fn axis_span(bounds: BoundingBox, axis: usize) -> f64 {
[INFO] [stdout]      |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `projected_bounds_match` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1137:4
[INFO] [stdout]      |
[INFO] [stdout] 1137 | fn projected_bounds_match(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `axis_ranges_touch` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1149:4
[INFO] [stdout]      |
[INFO] [stdout] 1149 | fn axis_ranges_touch(left: BoundingBox, right: BoundingBox, axis: usize, tolerance: f64) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `expanded_geometry_logo_member_indices` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1154:4
[INFO] [stdout]      |
[INFO] [stdout] 1154 | fn expanded_geometry_logo_member_indices(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_any_face_style_infos` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1186:4
[INFO] [stdout]      |
[INFO] [stdout] 1186 | fn collect_any_face_style_infos(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_geometry_logo_clusters` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1240:4
[INFO] [stdout]      |
[INFO] [stdout] 1240 | fn build_geometry_logo_clusters(face_styles: &[AnyFaceStyleInfo]) -> Vec<GeometryLogoCluster> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `geometry_logo_side` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1290:4
[INFO] [stdout]      |
[INFO] [stdout] 1290 | fn geometry_logo_side(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `choose_geometry_logo_replacement` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1317:4
[INFO] [stdout]      |
[INFO] [stdout] 1317 | fn choose_geometry_logo_replacement(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_behind_geometry_logo` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1352:4
[INFO] [stdout]      |
[INFO] [stdout] 1352 | fn is_behind_geometry_logo(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `choose_solid_style_fallback` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1376:4
[INFO] [stdout]      |
[INFO] [stdout] 1376 | fn choose_solid_style_fallback(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `choose_face_group_solid_style_fallback` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1400:4
[INFO] [stdout]      |
[INFO] [stdout] 1400 | fn choose_face_group_solid_style_fallback(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_solid_style_infos` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1424:4
[INFO] [stdout]      |
[INFO] [stdout] 1424 | fn collect_solid_style_infos(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_face_style_infos` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1467:4
[INFO] [stdout]      |
[INFO] [stdout] 1467 | fn collect_face_style_infos(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_outer_style_groups` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1527:4
[INFO] [stdout]      |
[INFO] [stdout] 1527 | fn build_outer_style_groups(face_styles: &[FaceStyleInfo]) -> Vec<FaceStyleGroup> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `choose_replacement_group` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1601:4
[INFO] [stdout]      |
[INFO] [stdout] 1601 | fn choose_replacement_group<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `choose_coplanar_surface_replacement_group` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1627:4
[INFO] [stdout]      |
[INFO] [stdout] 1627 | fn choose_coplanar_surface_replacement_group<'a>(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `descendant_faces` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1653:4
[INFO] [stdout]      |
[INFO] [stdout] 1653 | fn descendant_faces(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_descendant_faces` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1664:4
[INFO] [stdout]      |
[INFO] [stdout] 1664 | fn collect_descendant_faces(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_planar_face` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1691:4
[INFO] [stdout]      |
[INFO] [stdout] 1691 | fn parse_planar_face(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dominant_axis` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1741:4
[INFO] [stdout]      |
[INFO] [stdout] 1741 | fn dominant_axis(vector: [f64; 3]) -> Option<(usize, f64)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_outer_side` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1755:4
[INFO] [stdout]      |
[INFO] [stdout] 1755 | fn classify_outer_side(face: PlanarFaceInfo, solid_bounds: BoundingBox) -> Option<OuterSide> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `resolve_colour_rgb` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1770:4
[INFO] [stdout]      |
[INFO] [stdout] 1770 | fn resolve_colour_rgb(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_colour_rgb` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1797:4
[INFO] [stdout]      |
[INFO] [stdout] 1797 | fn parse_colour_rgb(body: &[u8]) -> Option<[f64; 3]> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `plane_axes` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1817:4
[INFO] [stdout]      |
[INFO] [stdout] 1817 | fn plane_axes(axis: usize) -> [usize; 2] {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `projected_area` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1825:4
[INFO] [stdout]      |
[INFO] [stdout] 1825 | fn projected_area(bounds: BoundingBox, axis: usize) -> f64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `projected_span` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1829:4
[INFO] [stdout]      |
[INFO] [stdout] 1829 | fn projected_span(bounds: BoundingBox, axis: usize, plane_component: usize) -> f64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `projected_contains` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1839:4
[INFO] [stdout]      |
[INFO] [stdout] 1839 | fn projected_contains(outer: BoundingBox, inner: BoundingBox, axis: usize, tolerance: f64) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `color_distance` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1852:4
[INFO] [stdout]      |
[INFO] [stdout] 1852 | fn color_distance(left: [f64; 3], right: [f64; 3]) -> f64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `color_luminance` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1857:4
[INFO] [stdout]      |
[INFO] [stdout] 1857 | fn color_luminance(color: [f64; 3]) -> f64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `colors_match` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1861:4
[INFO] [stdout]      |
[INFO] [stdout] 1861 | fn colors_match(left: [f64; 3], right: [f64; 3]) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quantize_color` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1865:4
[INFO] [stdout]      |
[INFO] [stdout] 1865 | fn quantize_color(color: [f64; 3]) -> ColorKey {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quantize_scalar` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1869:4
[INFO] [stdout]      |
[INFO] [stdout] 1869 | fn quantize_scalar(value: f64, tolerance: f64) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_logo_candidate_color` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1873:4
[INFO] [stdout]      |
[INFO] [stdout] 1873 | fn is_logo_candidate_color(color: [f64; 3]) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `current_coordinate_distance` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1880:4
[INFO] [stdout]      |
[INFO] [stdout] 1880 | fn current_coordinate_distance(left: f64, right: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `projected_bboxes_touch` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1884:4
[INFO] [stdout]      |
[INFO] [stdout] 1884 | fn projected_bboxes_touch(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bboxes_touch_3d` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1902:4
[INFO] [stdout]      |
[INFO] [stdout] 1902 | fn bboxes_touch_3d(left: BoundingBox, right: BoundingBox, tolerance: f64) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_representation_replacements` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1909:4
[INFO] [stdout]      |
[INFO] [stdout] 1909 | fn collect_representation_replacements(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max_entity_id` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1960:4
[INFO] [stdout]      |
[INFO] [stdout] 1960 | fn max_entity_id(entities: &[StepEntity]) -> usize {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_cover_patch_entities` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:1968:4
[INFO] [stdout]      |
[INFO] [stdout] 1968 | fn build_cover_patch_entities(patches: &[CoverPatch], mut next_id: usize) -> (Vec<usize>, Vec<u8>) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cover_patch_face_point_indices` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2222:4
[INFO] [stdout]      |
[INFO] [stdout] 2222 | fn cover_patch_face_point_indices() -> [[usize; 4]; 6] {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_vector` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2233:4
[INFO] [stdout]      |
[INFO] [stdout] 2233 | fn normalize_vector(vector: [f64; 3]) -> Option<[f64; 3]> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross_product` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2238:4
[INFO] [stdout]      |
[INFO] [stdout] 2238 | fn cross_product(left: [f64; 3], right: [f64; 3]) -> [f64; 3] {
[INFO] [stdout]      |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append_step_entities` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2246:4
[INFO] [stdout]      |
[INFO] [stdout] 2246 | fn append_step_entities(step_data: &[u8], entities: &[u8]) -> Vec<u8> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_last_subslice` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2268:4
[INFO] [stdout]      |
[INFO] [stdout] 2268 | fn find_last_subslice(haystack: &[u8], needle: &[u8]) -> Option<usize> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_styled_item_replacements` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2278:4
[INFO] [stdout]      |
[INFO] [stdout] 2278 | fn collect_styled_item_replacements(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_replacements` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2319:4
[INFO] [stdout]      |
[INFO] [stdout] 2319 | fn apply_replacements(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `top_level_ref_list_range` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2342:4
[INFO] [stdout]      |
[INFO] [stdout] 2342 | fn top_level_ref_list_range(body: &[u8]) -> Option<(usize, usize)> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `starts_with_ascii` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2369:4
[INFO] [stdout]      |
[INFO] [stdout] 2369 | fn starts_with_ascii(body: &[u8], prefix: &[u8]) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_coordinate_tuple` is never used
[INFO] [stdout]     --> src/kicad/step_sanitizer.rs:2373:4
[INFO] [stdout]      |
[INFO] [stdout] 2373 | fn parse_coordinate_tuple(body: &[u8]) -> Option<[f64; 3]> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvertedClock`, `InputLow`, `ClockLow`, `OutputLow`, `EdgeClockHigh`, and `NonLogic` are never constructed
[INFO] [stdout]   --> src/kicad/symbol.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub enum PinStyle {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 72 |     InvertedClock,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 73 |     InputLow,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 74 |     ClockLow,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 75 |     OutputLow,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 76 |     EdgeClockHigh,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 77 |     NonLogic,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PinStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_kicad_v5` is never used
[INFO] [stdout]   --> src/kicad/symbol.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | impl PinStyle {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn to_kicad_v5(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KicadSingleOptions` is never constructed
[INFO] [stdout]   --> src/kicad/workflow.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct KicadSingleOptions {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `lcsc_id` and `component_name` are never read
[INFO] [stdout]   --> src/kicad/workflow.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct KicadExportedComponent {
[INFO] [stdout]    |            ---------------------- fields in this struct
[INFO] [stdout] 56 |     pub lcsc_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 57 |     pub component_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KicadExportedComponent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_kicad_single` is never used
[INFO] [stdout]   --> src/kicad/workflow.rs:99:14
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub async fn export_kicad_single(options: KicadSingleOptions) -> Result<KicadBatchSummary> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OBJ_API` is never used
[INFO] [stdout]   --> src/lceda/api.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const OBJ_API: &str = "https://modules.lceda.cn/3dmodel";
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `download_obj_bytes` is never used
[INFO] [stdout]    --> src/lceda/api.rs:125:18
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl LcedaClient {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub async fn download_obj_bytes(&self, model_uuid: &str) -> Result<Vec<u8>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `index` is never read
[INFO] [stdout]  --> src/lceda/models.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct SearchItem {
[INFO] [stdout]   |            ---------- field in this struct
[INFO] [stdout] 7 |     pub index: usize,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `SearchItem` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `choose_obj_basename` is never used
[INFO] [stdout]   --> src/lceda/models.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl SearchItem {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn choose_obj_basename(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `split_obj_and_mtl` is never used
[INFO] [stdout]    --> src/util.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub fn split_obj_and_mtl(content: &str) -> (String, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAYER_MECHANICAL_8` is never used
[INFO] [stdout]   --> src/altium/pcblib.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const LAYER_MECHANICAL_8: u8 = 64;
[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 `unique_id` is never read
[INFO] [stdout]   --> src/altium/pcblib.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct PcbLibrary {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 56 |     pub unique_id: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PcbLibrary` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_schlib_from_payload` is never used
[INFO] [stdout]   --> src/altium/schlib.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn write_schlib_from_payload(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BundleManifest` is never constructed
[INFO] [stdout]   --> src/altium/workflow.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct BundleManifest {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `download_obj` is never used
[INFO] [stdout]   --> src/altium/workflow.rs:52:14
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub async fn download_obj(
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_easyeda_sources` is never used
[INFO] [stdout]   --> src/altium/workflow.rs:78:14
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub async fn export_easyeda_sources(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_schlib_component_from_detail` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:194:15
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub(crate) fn build_schlib_component_from_detail(
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_pcblib_library_for_item` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:240:14
[INFO] [stdout]     |
[INFO] [stdout] 240 | pub async fn build_pcblib_library_for_item(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_schlib_component_for_item` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:252:14
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub async fn build_schlib_component_for_item(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_schlib_component_for_item_with_metadata` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:270:14
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub async fn build_schlib_component_for_item_with_metadata(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_schlib` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:314:14
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub async fn export_schlib(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_bundle` is never used
[INFO] [stdout]    --> src/altium/workflow.rs:378:14
[INFO] [stdout]     |
[INFO] [stdout] 378 | pub async fn export_bundle(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `V5` is never constructed
[INFO] [stdout]    --> src/cli.rs:251:5
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub enum KicadVersion {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] 251 |     V5,
[INFO] [stdout]     |     ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `KicadVersion` 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: field `fill` is never read
[INFO] [stdout]    --> src/easyeda/models.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout]  97 | pub struct EeRectangle {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fill: bool,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeRectangle` 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: field `name` is never read
[INFO] [stdout]    --> src/easyeda/models.rs:178:9
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub struct EeFootprint {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] 178 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeFootprint` 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: field `net` is never read
[INFO] [stdout]    --> src/easyeda/models.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub struct EeTrack {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub net: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeTrack` 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: field `net` is never read
[INFO] [stdout]    --> src/easyeda/models.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct EeVia {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub net: String,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeVia` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `path`, `stroke_width`, and `layer` are never read
[INFO] [stdout]    --> src/easyeda/models.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub struct EeSvgNode {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 231 |     pub path: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 232 |     pub stroke_width: f64,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 233 |     pub layer: String,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EeSvgNode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `FootprintExport`, `ModelExport`, and `InvalidVersion` are never constructed
[INFO] [stdout]   --> src/error.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum KicadError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 85 |     FootprintExport(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     ModelExport(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     InvalidVersion,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KicadError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidCoordinate`, `InvalidUnit`, and `SvgParse` are never constructed
[INFO] [stdout]    --> src/error.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub enum ConversionError {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout]  99 |     #[error("invalid coordinate: {0}")]
[INFO] [stdout] 100 |     InvalidCoordinate(String),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     InvalidUnit(String),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     SvgParse(String),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConversionError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `normalize_to_bbox` and `calculate_bbox` are never used
[INFO] [stdout]    --> src/kicad/converter.rs:31:12
[INFO] [stdout]     |
[INFO] [stdout]   8 | impl Converter {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub fn normalize_to_bbox(&self, coord: f64, bbox_origin: f64) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn calculate_bbox(&self, points: &[(f64, f64)]) -> Option<(f64, f64, f64, f64)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tracks` is never read
[INFO] [stdout]  --> src/kicad/footprint.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct KiFootprint {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 5 |     pub tracks: Vec<KiTrack>,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `KiFootprint` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Connect` is never constructed
[INFO] [stdout]   --> src/kicad/footprint.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum PadType {
[INFO] [stdout]    |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Connect,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PadType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Trapezoid` and `RoundRect` are never constructed
[INFO] [stdout]   --> src/kicad/footprint.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum PadShape {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 37 |     Trapezoid,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 38 |     RoundRect,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PadShape` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `offset_x` and `offset_y` are never read
[INFO] [stdout]   --> src/kicad/footprint.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct Drill {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub offset_x: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 85 |     pub offset_y: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Drill` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start_x`, `start_y`, `end_x`, `end_y`, `width`, and `layer` are never read
[INFO] [stdout]   --> src/kicad/footprint.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct KiTrack {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 90 |     pub start_x: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 91 |     pub start_y: f64,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 92 |     pub end_x: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 93 |     pub end_y: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 94 |     pub width: f64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 95 |     pub layer: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KiTrack` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `lib_name`, `component_exists`, `add_component`, `update_component`, and `write_footprint` are never used
[INFO] [stdout]    --> src/kicad/library.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl LibraryManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn lib_name(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn component_exists(&self, lib_path: &Path, component_name: &str) -> Result<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn add_component(&self, lib_path: &Path, component_data: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn update_component(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 420 |     pub fn write_footprint(&self, footprint_name: &str, data: &str) -> Result<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `summary` is never used
[INFO] [stdout]   --> src/kicad/model_converter.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl ModelStageStatus {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvertedClock`, `InputLow`, `ClockLow`, `OutputLow`, `EdgeClockHigh`, and `NonLogic` are never constructed
[INFO] [stdout]   --> src/kicad/symbol.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub enum PinStyle {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 72 |     InvertedClock,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 73 |     InputLow,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 74 |     ClockLow,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 75 |     OutputLow,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 76 |     EdgeClockHigh,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 77 |     NonLogic,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PinStyle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_kicad_v5` is never used
[INFO] [stdout]   --> src/kicad/symbol.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 80 | impl PinStyle {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn to_kicad_v5(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KicadSingleOptions` is never constructed
[INFO] [stdout]   --> src/kicad/workflow.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct KicadSingleOptions {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `lcsc_id` and `component_name` are never read
[INFO] [stdout]   --> src/kicad/workflow.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct KicadExportedComponent {
[INFO] [stdout]    |            ---------------------- fields in this struct
[INFO] [stdout] 56 |     pub lcsc_id: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 57 |     pub component_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KicadExportedComponent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_kicad_single` is never used
[INFO] [stdout]   --> src/kicad/workflow.rs:99:14
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub async fn export_kicad_single(options: KicadSingleOptions) -> Result<KicadBatchSummary> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OBJ_API` is never used
[INFO] [stdout]   --> src/lceda/api.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const OBJ_API: &str = "https://modules.lceda.cn/3dmodel";
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `download_obj_bytes` is never used
[INFO] [stdout]    --> src/lceda/api.rs:125:18
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl LcedaClient {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub async fn download_obj_bytes(&self, model_uuid: &str) -> Result<Vec<u8>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `choose_obj_basename` is never used
[INFO] [stdout]   --> src/lceda/models.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl SearchItem {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn choose_obj_basename(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5m 02s
[INFO] running `Command { std: "docker" "inspect" "d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737", kill_on_drop: false }`
[INFO] [stdout] d88534c2f49d4102aaf881ad105d4bb0e3678f63fbacd86122430c0c5668d737
