[INFO] cloning repository https://github.com/Dave-he/rs-face
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Dave-he/rs-face" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDave-he%2Frs-face", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDave-he%2Frs-face'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8e3311bd26461c3b88509dbb0b1d92fee6fa1d9d
[INFO] checking Dave-he/rs-face against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6 for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDave-he%2Frs-face" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Dave-he/rs-face
[INFO] finished tweaking git repo https://github.com/Dave-he/rs-face
[INFO] tweaked toml for git repo https://github.com/Dave-he/rs-face written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Dave-he/rs-face on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Dave-he/rs-face 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" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399
[INFO] running `Command { std: "docker" "start" "cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399", 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" "cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399", 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" "cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking rs-face v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0433]: cannot find module or crate `rs_face` in this scope
[INFO] [stdout]  --> tests/pgm_test.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 |     let result = rs_face::read_pgm(Path::new("/tmp/rs-face-test/frames/face_00001.pgm"));
[INFO] [stdout]   |                  ^^^^^^^ use of unresolved module or unlinked crate `rs_face`
[INFO] [stdout]   |
[INFO] [stdout]   = help: if you wanted to use a crate named `rs_face`, use `cargo add rs_face` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::align`
[INFO] [stdout]  --> src/saver.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::align;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rs-face` (test "pgm_test") due to 1 previous error
[INFO] [stdout] warning: unused import: `crate::align`
[INFO] [stdout]  --> src/saver.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::align;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `cy`
[INFO] [stdout]   --> src/align.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let cy = fy + fh / 3;
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_cy`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cy`
[INFO] [stdout]   --> src/align.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let cy = fy + fh / 3;
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_cy`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `labels`
[INFO] [stdout]   --> src/benchmark.rs:90:15
[INFO] [stdout]    |
[INFO] [stdout] 90 |     let (mat, labels, names) = load_face_dataset(dir, size)?;
[INFO] [stdout]    |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_labels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `labels`
[INFO] [stdout]   --> src/benchmark.rs:90:15
[INFO] [stdout]    |
[INFO] [stdout] 90 |     let (mat, labels, names) = load_face_dataset(dir, size)?;
[INFO] [stdout]    |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_labels`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `last_d` is assigned to, but never used
[INFO] [stdout]    --> src/benchmark.rs:586:9
[INFO] [stdout]     |
[INFO] [stdout] 586 |     let mut last_d = f64::NEG_INFINITY;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_last_d` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_d` is never read
[INFO] [stdout]    --> src/benchmark.rs:616:9
[INFO] [stdout]     |
[INFO] [stdout] 616 |         last_d = d;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `last_d` is assigned to, but never used
[INFO] [stdout]    --> src/benchmark.rs:586:9
[INFO] [stdout]     |
[INFO] [stdout] 586 |     let mut last_d = f64::NEG_INFINITY;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_last_d` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_d` is never read
[INFO] [stdout]    --> src/benchmark.rs:616:9
[INFO] [stdout]     |
[INFO] [stdout] 616 |         last_d = d;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `sum_dist` is assigned to, but never used
[INFO] [stdout]    --> src/recognition.rs:271:13
[INFO] [stdout]     |
[INFO] [stdout] 271 |         let mut sum_dist = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_sum_dist` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sum_dist` is never read
[INFO] [stdout]    --> src/recognition.rs:276:13
[INFO] [stdout]     |
[INFO] [stdout] 276 |             sum_dist += *d;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/main.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 |     let name = img_path.file_stem().and_then(|s| s.to_str()).unwrap_or("image");
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame_idx`
[INFO] [stdout]    --> src/main.rs:546:23
[INFO] [stdout]     |
[INFO] [stdout] 546 |         let (ts_secs, frame_idx) = saver::parse_frame_timestamp(&path);
[INFO] [stdout]     |                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `sum_dist` is assigned to, but never used
[INFO] [stdout]    --> src/recognition.rs:271:13
[INFO] [stdout]     |
[INFO] [stdout] 271 |         let mut sum_dist = 0.0f64;
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_sum_dist` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sum_dist` is never read
[INFO] [stdout]    --> src/recognition.rs:276:13
[INFO] [stdout]     |
[INFO] [stdout] 276 |             sum_dist += *d;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RawDetection` is more private than the item `track_and_save`
[INFO] [stdout]    --> src/detector.rs:459:1
[INFO] [stdout]     |
[INFO] [stdout] 459 | / pub fn track_and_save(
[INFO] [stdout] 460 | |     detections: &mut Vec<RawDetection>,
[INFO] [stdout] 461 | |     output_dir: &std::path::Path,
[INFO] [stdout] 462 | |     track_threshold: f64,
[INFO] [stdout] 463 | | ) -> Result<Vec<tracker::FaceTrack>, BoxError> {
[INFO] [stdout]     | |______________________________________________^ function `track_and_save` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RawDetection` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/detector.rs:450:1
[INFO] [stdout]     |
[INFO] [stdout] 450 | struct RawDetection {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mode` and `train_per_fold` are never read
[INFO] [stdout]   --> src/benchmark.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Options {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 54 |     pub mode: Mode,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub train_per_fold: usize,// 每类训练样本数 (0 = 自动 = max(1, samples_per_class - test_per_fold))
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Options` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `samples_per_class` is never read
[INFO] [stdout]   --> src/benchmark.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct LoadedDataset {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub samples_per_class: Vec<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LoadedDataset` 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 `confusion` is never read
[INFO] [stdout]    --> src/benchmark.rs:328:9
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub struct IdentificationReport {
[INFO] [stdout]     |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub confusion: Vec<Vec<u32>>, // [n_classes][n_classes]
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `IdentificationReport` 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 `path` is never read
[INFO] [stdout]    --> src/benchmark.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub struct Failure {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub path: std::path::PathBuf,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Failure` 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_markdown` is never used
[INFO] [stdout]    --> src/benchmark.rs:623:8
[INFO] [stdout]     |
[INFO] [stdout] 623 | pub fn write_markdown(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `predict` is never used
[INFO] [stdout]   --> src/cascade.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | impl WeakClassifier {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 68 |     pub fn predict(&self, value: f64, std_dev_norm: f64) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pass` is never used
[INFO] [stdout]   --> src/cascade.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl Stage {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 85 |     pub fn pass(&self, ii: &IntegralImage, features: &[HaarFeature], x: i32, y: i32, scale: f32, std_dev_norm: f64) -> Option<f64> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `attrs` is never read
[INFO] [stdout]    --> src/cascade.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     Element {
[INFO] [stdout]     |     ------- field in this variant
[INFO] [stdout] 190 |         name: String,
[INFO] [stdout] 191 |         attrs: Vec<(String, String)>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `XmlNode` 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 `track_and_save` is never used
[INFO] [stdout]    --> src/detector.rs:459:8
[INFO] [stdout]     |
[INFO] [stdout] 459 | pub fn track_and_save(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n_dim` is never read
[INFO] [stdout]    --> src/hog_svm.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub struct LinearSvm {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub n_dim: usize,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LinearSvm` 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`, `predict_label`, `train_sgd`, and `save` are never used
[INFO] [stdout]    --> src/hog_svm.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl LinearSvm {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 144 |     pub fn new(n_dim: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn predict_label(&self, x: &[f64]) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn train_sgd(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn save<P: AsRef<std::path::Path>>(&self, path: P) -> Result<(), BoxError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/hog_svm.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 229 | impl HogSvmDetector {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 230 |     pub fn new(svm: LinearSvm) -> Self { Self { svm, window: HOG_WINDOW } }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_hog_window` is never used
[INFO] [stdout]    --> src/hog_svm.rs:327:8
[INFO] [stdout]     |
[INFO] [stdout] 327 | pub fn extract_hog_window(img: &Image, rect: Rect) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `train_hog_svm` is never used
[INFO] [stdout]    --> src/hog_svm.rs:344:8
[INFO] [stdout]     |
[INFO] [stdout] 344 | pub fn train_hog_svm(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `right`, `bottom`, and `area` are never used
[INFO] [stdout]   --> src/image.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Rect {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn right(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn bottom(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn area(&self) -> i32 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_ppm` is never used
[INFO] [stdout]    --> src/image.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl Image {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn save_ppm<P: AsRef<Path>>(&self, path: P) -> Result<(), BoxError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_gray` is never used
[INFO] [stdout]   --> src/imgproc.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl IntegralImage {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn from_gray(img: &GrayImage) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/linalg.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl Matrix {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub fn from_vec(rows: usize, cols: usize, data: Vec<f64>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn zeros(rows: usize, cols: usize) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub fn ones(rows: usize, cols: usize) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn add(&self, other: &Matrix) -> Matrix {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn sub(&self, other: &Matrix) -> Matrix {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn row(&self, r: usize) -> Vec<f64> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn col(&self, c: usize) -> Vec<f64> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn set_row(&mut self, r: usize, row: &[f64]) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn set_col(&mut self, c: usize, col: &[f64]) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn mean_col(&self) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn frobenius_norm(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn trace(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dot` is never used
[INFO] [stdout]    --> src/linalg.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn dot(a: &[f64], b: &[f64]) -> f64 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_norm` is never used
[INFO] [stdout]    --> src/linalg.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 180 | pub fn vec_norm(a: &[f64]) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_normalize` is never used
[INFO] [stdout]    --> src/linalg.rs:188:8
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub fn vec_normalize(a: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_add` is never used
[INFO] [stdout]    --> src/linalg.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn vec_add(a: &[f64], b: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_sub` is never used
[INFO] [stdout]    --> src/linalg.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn vec_sub(a: &[f64], b: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_scale` is never used
[INFO] [stdout]    --> src/linalg.rs:207:8
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn vec_scale(a: &[f64], s: f64) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reconstruct` is never used
[INFO] [stdout]    --> src/linalg.rs:350:8
[INFO] [stdout]     |
[INFO] [stdout] 350 | pub fn reconstruct(projection: &[f64], eigenvectors: &Matrix, mean: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `pixel`, `set_pixel`, `resize`, `crop`, and `equalize` are never used
[INFO] [stdout]   --> src/ppm.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl GrayImage {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(w: u32, h: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn pixel(&self, x: u32, y: u32) -> u8 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn set_pixel(&mut self, x: u32, y: u32, v: u8) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn resize(&self, new_w: u32, new_h: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn crop(&self, x: i32, y: i32, w: i32, h: i32) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn equalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_ppm` is never used
[INFO] [stdout]    --> src/ppm.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn read_ppm<P: AsRef<Path>>(path: P) -> Result<GrayImage, String> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_ppm_rgb` is never used
[INFO] [stdout]    --> src/ppm.rs:222:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub fn write_ppm_rgb<P: AsRef<Path>>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stream_pos` is never used
[INFO] [stdout]    --> src/ppm.rs:239:4
[INFO] [stdout]     |
[INFO] [stdout] 239 | fn stream_pos<R: Seek>(r: &mut R) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_token` is never used
[INFO] [stdout]    --> src/ppm.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn read_token<R: Read>(r: &mut R) -> Result<String, String> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save` is never used
[INFO] [stdout]    --> src/recognition.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 211 | impl FaceModel {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn save<P: AsRef<std::path::Path>>(&self, path: P) -> Result<(), BoxError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KnnClassifier` is never constructed
[INFO] [stdout]    --> src/recognition.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub struct KnnClassifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `train`, and `predict` are never used
[INFO] [stdout]    --> src/recognition.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout] 248 | impl KnnClassifier {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 249 |     pub fn new(k: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn train(&mut self, vectors: &[Vec<f64>], labels: &[usize], names: &[String]) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn predict(&self, v: &[f64], metric: fn(&[f64], &[f64]) -> f64) -> (usize, f64, Option<String>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SvmLinear` is never constructed
[INFO] [stdout]    --> src/recognition.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub struct SvmLinear {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `train`, and `predict` are never used
[INFO] [stdout]    --> src/recognition.rs:299:12
[INFO] [stdout]     |
[INFO] [stdout] 298 | impl SvmLinear {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 299 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn train(&mut self, vectors: &[Vec<f64>], labels: &[usize], names: &[String], iterations: usize, lr: f64, lambda: f64) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn predict(&self, v: &[f64]) -> (usize, f64, Option<String>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_keyframe` is never read
[INFO] [stdout]   --> src/saver.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct FaceRecord {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub is_keyframe: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FaceRecord` 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 `extract_frames_pgm_with_timestamps` is never used
[INFO] [stdout]   --> src/video.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn extract_frames_pgm_with_timestamps<P: AsRef<Path>, Q: AsRef<Path>>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/main.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 |     let name = img_path.file_stem().and_then(|s| s.to_str()).unwrap_or("image");
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame_idx`
[INFO] [stdout]    --> src/main.rs:546:23
[INFO] [stdout]     |
[INFO] [stdout] 546 |         let (ts_secs, frame_idx) = saver::parse_frame_timestamp(&path);
[INFO] [stdout]     |                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_frame_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RawDetection` is more private than the item `track_and_save`
[INFO] [stdout]    --> src/detector.rs:459:1
[INFO] [stdout]     |
[INFO] [stdout] 459 | / pub fn track_and_save(
[INFO] [stdout] 460 | |     detections: &mut Vec<RawDetection>,
[INFO] [stdout] 461 | |     output_dir: &std::path::Path,
[INFO] [stdout] 462 | |     track_threshold: f64,
[INFO] [stdout] 463 | | ) -> Result<Vec<tracker::FaceTrack>, BoxError> {
[INFO] [stdout]     | |______________________________________________^ function `track_and_save` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RawDetection` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/detector.rs:450:1
[INFO] [stdout]     |
[INFO] [stdout] 450 | struct RawDetection {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mode` and `train_per_fold` are never read
[INFO] [stdout]   --> src/benchmark.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Options {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 54 |     pub mode: Mode,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub train_per_fold: usize,// 每类训练样本数 (0 = 自动 = max(1, samples_per_class - test_per_fold))
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Options` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `samples_per_class` is never read
[INFO] [stdout]   --> src/benchmark.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub struct LoadedDataset {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub samples_per_class: Vec<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LoadedDataset` 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 `confusion` is never read
[INFO] [stdout]    --> src/benchmark.rs:328:9
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub struct IdentificationReport {
[INFO] [stdout]     |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub confusion: Vec<Vec<u32>>, // [n_classes][n_classes]
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `IdentificationReport` 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 `path` is never read
[INFO] [stdout]    --> src/benchmark.rs:337:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub struct Failure {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 337 |     pub path: std::path::PathBuf,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Failure` 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_markdown` is never used
[INFO] [stdout]    --> src/benchmark.rs:623:8
[INFO] [stdout]     |
[INFO] [stdout] 623 | pub fn write_markdown(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `predict` is never used
[INFO] [stdout]   --> src/cascade.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | impl WeakClassifier {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 68 |     pub fn predict(&self, value: f64, std_dev_norm: f64) -> f64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pass` is never used
[INFO] [stdout]   --> src/cascade.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl Stage {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 85 |     pub fn pass(&self, ii: &IntegralImage, features: &[HaarFeature], x: i32, y: i32, scale: f32, std_dev_norm: f64) -> Option<f64> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `attrs` is never read
[INFO] [stdout]    --> src/cascade.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     Element {
[INFO] [stdout]     |     ------- field in this variant
[INFO] [stdout] 190 |         name: String,
[INFO] [stdout] 191 |         attrs: Vec<(String, String)>,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `XmlNode` 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 `track_and_save` is never used
[INFO] [stdout]    --> src/detector.rs:459:8
[INFO] [stdout]     |
[INFO] [stdout] 459 | pub fn track_and_save(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `n_dim` is never read
[INFO] [stdout]    --> src/hog_svm.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub struct LinearSvm {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub n_dim: usize,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `LinearSvm` 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`, `predict_label`, `train_sgd`, and `save` are never used
[INFO] [stdout]    --> src/hog_svm.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl LinearSvm {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 144 |     pub fn new(n_dim: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn predict_label(&self, x: &[f64]) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn train_sgd(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn save<P: AsRef<std::path::Path>>(&self, path: P) -> Result<(), BoxError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/hog_svm.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 229 | impl HogSvmDetector {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 230 |     pub fn new(svm: LinearSvm) -> Self { Self { svm, window: HOG_WINDOW } }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_hog_window` is never used
[INFO] [stdout]    --> src/hog_svm.rs:327:8
[INFO] [stdout]     |
[INFO] [stdout] 327 | pub fn extract_hog_window(img: &Image, rect: Rect) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `train_hog_svm` is never used
[INFO] [stdout]    --> src/hog_svm.rs:344:8
[INFO] [stdout]     |
[INFO] [stdout] 344 | pub fn train_hog_svm(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `right`, `bottom`, and `area` are never used
[INFO] [stdout]   --> src/image.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Rect {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn right(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn bottom(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn area(&self) -> i32 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save_ppm` is never used
[INFO] [stdout]    --> src/image.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl Image {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn save_ppm<P: AsRef<Path>>(&self, path: P) -> Result<(), BoxError> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_gray` is never used
[INFO] [stdout]   --> src/imgproc.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl IntegralImage {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn from_gray(img: &GrayImage) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/linalg.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl Matrix {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub fn from_vec(rows: usize, cols: usize, data: Vec<f64>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn zeros(rows: usize, cols: usize) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub fn ones(rows: usize, cols: usize) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn add(&self, other: &Matrix) -> Matrix {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn sub(&self, other: &Matrix) -> Matrix {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn row(&self, r: usize) -> Vec<f64> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn col(&self, c: usize) -> Vec<f64> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn set_row(&mut self, r: usize, row: &[f64]) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn set_col(&mut self, c: usize, col: &[f64]) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn mean_col(&self) -> Vec<f64> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn frobenius_norm(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn trace(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dot` is never used
[INFO] [stdout]    --> src/linalg.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn dot(a: &[f64], b: &[f64]) -> f64 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_norm` is never used
[INFO] [stdout]    --> src/linalg.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 180 | pub fn vec_norm(a: &[f64]) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_normalize` is never used
[INFO] [stdout]    --> src/linalg.rs:188:8
[INFO] [stdout]     |
[INFO] [stdout] 188 | pub fn vec_normalize(a: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_add` is never used
[INFO] [stdout]    --> src/linalg.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn vec_add(a: &[f64], b: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_sub` is never used
[INFO] [stdout]    --> src/linalg.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn vec_sub(a: &[f64], b: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_scale` is never used
[INFO] [stdout]    --> src/linalg.rs:207:8
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub fn vec_scale(a: &[f64], s: f64) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reconstruct` is never used
[INFO] [stdout]    --> src/linalg.rs:350:8
[INFO] [stdout]     |
[INFO] [stdout] 350 | pub fn reconstruct(projection: &[f64], eigenvectors: &Matrix, mean: &[f64]) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `pixel`, `set_pixel`, `resize`, `crop`, and `equalize` are never used
[INFO] [stdout]   --> src/ppm.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl GrayImage {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(w: u32, h: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn pixel(&self, x: u32, y: u32) -> u8 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn set_pixel(&mut self, x: u32, y: u32, v: u8) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn resize(&self, new_w: u32, new_h: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn crop(&self, x: i32, y: i32, w: i32, h: i32) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn equalize(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_ppm` is never used
[INFO] [stdout]    --> src/ppm.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn read_ppm<P: AsRef<Path>>(path: P) -> Result<GrayImage, String> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_ppm_rgb` is never used
[INFO] [stdout]    --> src/ppm.rs:222:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub fn write_ppm_rgb<P: AsRef<Path>>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stream_pos` is never used
[INFO] [stdout]    --> src/ppm.rs:239:4
[INFO] [stdout]     |
[INFO] [stdout] 239 | fn stream_pos<R: Seek>(r: &mut R) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_token` is never used
[INFO] [stdout]    --> src/ppm.rs:243:4
[INFO] [stdout]     |
[INFO] [stdout] 243 | fn read_token<R: Read>(r: &mut R) -> Result<String, String> {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save` is never used
[INFO] [stdout]    --> src/recognition.rs:220:12
[INFO] [stdout]     |
[INFO] [stdout] 211 | impl FaceModel {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn save<P: AsRef<std::path::Path>>(&self, path: P) -> Result<(), BoxError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `KnnClassifier` is never constructed
[INFO] [stdout]    --> src/recognition.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub struct KnnClassifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `train`, and `predict` are never used
[INFO] [stdout]    --> src/recognition.rs:249:12
[INFO] [stdout]     |
[INFO] [stdout] 248 | impl KnnClassifier {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 249 |     pub fn new(k: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn train(&mut self, vectors: &[Vec<f64>], labels: &[usize], names: &[String]) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn predict(&self, v: &[f64], metric: fn(&[f64], &[f64]) -> f64) -> (usize, f64, Option<String>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SvmLinear` is never constructed
[INFO] [stdout]    --> src/recognition.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub struct SvmLinear {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `train`, and `predict` are never used
[INFO] [stdout]    --> src/recognition.rs:299:12
[INFO] [stdout]     |
[INFO] [stdout] 298 | impl SvmLinear {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 299 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn train(&mut self, vectors: &[Vec<f64>], labels: &[usize], names: &[String], iterations: usize, lr: f64, lambda: f64) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn predict(&self, v: &[f64]) -> (usize, f64, Option<String>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_keyframe` is never read
[INFO] [stdout]   --> src/saver.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct FaceRecord {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub is_keyframe: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FaceRecord` 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 `extract_frames_pgm_with_timestamps` is never used
[INFO] [stdout]   --> src/video.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn extract_frames_pgm_with_timestamps<P: AsRef<Path>, Q: AsRef<Path>>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399", kill_on_drop: false }`
[INFO] [stdout] cb219e3394f3d95d60f3a01ebccb7c73562cf0bdc6eb11c64295b376141bb399
