[INFO] cloning repository https://github.com/azatalg/psp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/azatalg/psp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fazatalg%2Fpsp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fazatalg%2Fpsp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f0cb254ad924aa6f051eecf7388c4eaa271aa007
[INFO] checking azatalg/psp/f0cb254ad924aa6f051eecf7388c4eaa271aa007 against c999cef531ea9059e189e82fe0e82c5daf249bc9 for pr-160904
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fazatalg%2Fpsp" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/azatalg/psp
[INFO] finished tweaking git repo https://github.com/azatalg/psp
[INFO] tweaked toml for git repo https://github.com/azatalg/psp written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/azatalg/psp on toolchain c999cef531ea9059e189e82fe0e82c5daf249bc9
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/azatalg/psp 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" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd
[INFO] running `Command { std: "docker" "start" "5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd", 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" "5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd" "/opt/rustwide/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd", 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" "5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd" "/opt/rustwide/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]    Compiling yeslogic-fontconfig-sys v6.0.0
[INFO] [stderr]    Compiling pathfinder_simd v0.5.5
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]    Compiling font-kit v0.14.3
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking rand_core v0.10.0
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]     Checking gif v0.12.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.10
[INFO] [stderr]     Checking float-ord v0.3.2
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking chacha20 v0.10.0
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking dlib v0.5.3
[INFO] [stderr]     Checking ttf-parser v0.20.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking pest v2.8.6
[INFO] [stderr]     Checking pathfinder_geometry v0.5.1
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking rand v0.10.0
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]    Compiling freetype-sys v0.20.1
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]     Checking plotters-bitmap v0.3.7
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]     Checking handlebars v5.1.2
[INFO] [stderr]     Checking psp v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/simulations.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/task_1.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/simulations.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/task_1.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CACHE_DIR` is never used
[INFO] [stdout]  --> src/config.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const CACHE_DIR: &str = "out/cache";
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK1_NS` is never used
[INFO] [stdout]  --> src/config.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const TASK1_NS: [usize; 6] = [5, 10, 15, 20, 50, 100];
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK2_NS` is never used
[INFO] [stdout]  --> src/config.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const TASK2_NS: [usize; 4] = [5, 10, 50, 100];
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK3_NS` is never used
[INFO] [stdout]  --> src/config.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const TASK3_NS: [usize; 4] = [10, 50, 100, 500];
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK1_COIN_REPS` is never used
[INFO] [stdout]  --> src/config.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const TASK1_COIN_REPS: usize = 200;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK1_COIN_THROWS` is never used
[INFO] [stdout]  --> src/config.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const TASK1_COIN_THROWS: usize = 100;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK2_REPS` is never used
[INFO] [stdout]   --> src/config.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const TASK2_REPS: usize = 200;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK3_REPS` is never used
[INFO] [stdout]   --> src/config.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const TASK3_REPS: usize = 300;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SampleExperimentResult` is never constructed
[INFO] [stdout]  --> src/experiments.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SampleExperimentResult {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvergenceResult` is never constructed
[INFO] [stdout]   --> src/experiments.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ConvergenceResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CltResult` is never constructed
[INFO] [stdout]   --> src/experiments.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct CltResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MeansForNsResult` is never constructed
[INFO] [stdout]   --> src/experiments.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct MeansForNsResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PopulationSamplingResult` is never constructed
[INFO] [stdout]   --> src/experiments.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct PopulationSamplingResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_sample_experiment` is never used
[INFO] [stdout]   --> src/experiments.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn run_sample_experiment<F>(n: usize, sampler: F) -> SampleExperimentResult
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_means_for_ns` is never used
[INFO] [stdout]   --> src/experiments.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn run_means_for_ns<F>(ns: &[usize], sampler: F) -> MeansForNsResult
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_convergence_experiment` is never used
[INFO] [stdout]   --> src/experiments.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn run_convergence_experiment<F>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_clt_experiment` is never used
[INFO] [stdout]   --> src/experiments.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn run_clt_experiment<F>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_population_sampling_experiment` is never used
[INFO] [stdout]    --> src/experiments.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn run_population_sampling_experiment<F>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_population_clt_experiment` is never used
[INFO] [stdout]    --> src/experiments.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub fn run_population_clt_experiment<F>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `optimal_bins_freedman_diaconis` is never used
[INFO] [stdout]    --> src/math.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn optimal_bins_freedman_diaconis(data: &mut [f64]) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_means` is never used
[INFO] [stdout]    --> src/math.rs:166:8
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub fn normalize_means(means: &[f64], mu: f64, sigma: f64, n: usize) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `means_for_ns` is never used
[INFO] [stdout]    --> src/math.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn means_for_ns<F>(ns: &[usize], sampler: F) -> Vec<(usize, f64)>
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convergence_series` is never used
[INFO] [stdout]    --> src/math.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn convergence_series<F>(max_n: usize, sampler: F) -> Vec<(f64, f64)>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repeated_sample_means` is never used
[INFO] [stdout]    --> src/math.rs:195:8
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub fn repeated_sample_means<F>(n: usize, reps: usize, sampler: F) -> Vec<f64>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sector` is never read
[INFO] [stdout]    --> src/parser.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct IncomeRecord {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub sector: usize,    // 5..7
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `IncomeRecord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/plot.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl PlotRef {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(name: impl Into<String>, path: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/plot.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PlotFactory {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn with_size(mut self, width: u32, height: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn hist_and_box(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn normalized_histogram(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn normalized_histogram_auto(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn normalized_histogram_with_normal_overlay(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn line_plot_with_reference(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn convergence_plot(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn clt_hist(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub fn population_hist(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `draw_line_plot_with_reference` and `draw_density_histogram_with_standard_normal` are never used
[INFO] [stdout]    --> src/plot.rs:275:12
[INFO] [stdout]     |
[INFO] [stdout] 255 | impl<'a> ChartConfig<'a> {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn draw_line_plot_with_reference(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     pub fn draw_density_histogram_with_standard_normal(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Note` and `Html` are never constructed
[INFO] [stdout]   --> src/raport.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum Block {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 15 |     Note { content: String },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 16 |     Html { content: String },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `IntoBlock` is never used
[INFO] [stdout]   --> src/raport.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub trait IntoBlock {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `stats_by_group` and `from_usize_f64_pairs` are never used
[INFO] [stdout]    --> src/raport.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Table {
[INFO] [stdout]     | ---------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn stats_by_group(rows: &[(&str, &SummaryStats)]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn from_usize_f64_pairs(headers: [&str; 2], rows: &[(usize, f64)]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/raport.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | impl SectionBuilder {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn add<B: IntoBlock>(&mut self, block: B) -> &mut Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn add_pair(&mut self, left: PlotRef, right: PlotRef) -> &mut Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn note(&mut self, content: &str) -> &mut Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn html(&mut self, content: &str) -> &mut Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn raw_table<S: ToString>(&mut self, headers: Vec<S>, rows: Vec<Vec<S>>) -> &mut Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn stats_table(&mut self, stats: &SummaryStats) -> &mut Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn stats_by_group(&mut self, rows: &[(&str, &SummaryStats)]) -> &mut Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn variable_report(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn comparison_report(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `subtitle`, `date`, `date_now`, and `section_standard` are never used
[INFO] [stdout]    --> src/raport.rs:369:12
[INFO] [stdout]     |
[INFO] [stdout] 363 | impl ReportBuilder {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn subtitle(mut self, subtitle: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn date(mut self, date: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn date_now(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn section_standard<F>(self, title: &str, f: F) -> Self
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/runner.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl ExperimentRunner {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub fn without_cache(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn sample_experiment<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn means_for_ns<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn convergence<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn clt<F>(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn population_sample<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn population_clt<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn cached_stats(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_rng` is never used
[INFO] [stdout]   --> src/simulations.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn with_rng<T>(f: impl FnOnce(&mut SmallRng) -> T) -> T {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sample` is never used
[INFO] [stdout]   --> src/simulations.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn sample<T, F>(n: usize, mut generator: F) -> Vec<T>
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repeat` is never used
[INFO] [stdout]   --> src/simulations.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn repeat<T, F>(reps: usize, mut experiment: F) -> Vec<T>
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `experiment_sum` is never used
[INFO] [stdout]   --> src/simulations.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn experiment_sum<F>(n: usize, generator: F) -> f64
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `experiment_mean` is never used
[INFO] [stdout]   --> src/simulations.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn experiment_mean<F>(n: usize, generator: F) -> f64
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dice` is never used
[INFO] [stdout]   --> src/simulations.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn dice() -> f64 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coin` is never used
[INFO] [stdout]   --> src/simulations.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn coin() -> f64 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uniform01` is never used
[INFO] [stdout]   --> src/simulations.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn uniform01() -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exp` is never used
[INFO] [stdout]   --> src/simulations.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn exp(lambda: f64) -> f64 {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poisson` is never used
[INFO] [stdout]   --> src/simulations.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn poisson(lambda: f64) -> f64 {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normal` is never used
[INFO] [stdout]    --> src/simulations.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn normal(mean: f64, stddev: f64) -> f64 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_population_with_replacement` is never used
[INFO] [stdout]    --> src/simulations.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn from_population_with_replacement(population: &[f64]) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sample_from_population_with_replacement` is never used
[INFO] [stdout]    --> src/simulations.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn sample_from_population_with_replacement(population: &[f64], n: usize) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sample_from_population_without_replacement` is never used
[INFO] [stdout]    --> src/simulations.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn sample_from_population_without_replacement(population: &[f64], n: usize) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append` is never used
[INFO] [stdout]  --> src/task1.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn append(
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fmt` is never used
[INFO] [stdout]  --> src/task2.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn fmt(x: f64) -> String {
[INFO] [stdout]   |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append` is never used
[INFO] [stdout]   --> src/task2.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn append(
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fmt` is never used
[INFO] [stdout]  --> src/task3.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn fmt(x: f64) -> String {
[INFO] [stdout]   |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_incomes` is never used
[INFO] [stdout]   --> src/task3.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn extract_incomes(records: &[IncomeRecord]) -> Vec<f64> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append` is never used
[INFO] [stdout]   --> src/task3.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn append(
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `slug` is never used
[INFO] [stdout]   --> src/task_1.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn slug(name: &str) -> String {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> src/analysis.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct VariableReport {
[INFO] [stdout]   |            -------------- field in this struct
[INFO] [stdout] 6 |     pub name: String,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_variable` is never used
[INFO] [stdout]   --> src/analysis.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn analyze_variable(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_groups` is never used
[INFO] [stdout]   --> src/analysis.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn compare_groups(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `slug` is never used
[INFO] [stdout]   --> src/analysis.rs:88:4
[INFO] [stdout]    |
[INFO] [stdout] 88 | fn slug(s: &str) -> String {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `max`, `q1`, `q3`, `var`, `std`, and `cv` are never used
[INFO] [stdout]    --> src/analysis.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl PrettyStats {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn max(&self) -> String { format!("{:.2}", self.0.max) }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 109 |     pub fn q1(&self) -> String { format!("{:.2}", self.0.q1) }
[INFO] [stdout]     |            ^^
[INFO] [stdout] 110 |     pub fn q3(&self) -> String { format!("{:.2}", self.0.q3) }
[INFO] [stdout]     |            ^^
[INFO] [stdout] 111 |     pub fn var(&self) -> String { format!("{:.2}", self.0.variance_sample) }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 112 |     pub fn std(&self) -> String { format!("{:.2}", self.0.std_dev_sample) }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 113 |     pub fn cv(&self) -> String { format!("{:.2}%", self.0.cv_sample * 100.0) }
[INFO] [stdout]     |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key` is never used
[INFO] [stdout]  --> src/naming.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn key(parts: &[&str]) -> String {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `slug` is never used
[INFO] [stdout]  --> src/naming.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn slug(s: &str) -> String {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `b` is never used
[INFO] [stdout]  --> src/rich_text.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn b(text: impl AsRef<str>) -> String {
[INFO] [stdout]   |        ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `em` is never used
[INFO] [stdout]  --> src/rich_text.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn em(text: impl AsRef<str>) -> String {
[INFO] [stdout]   |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `var` is never used
[INFO] [stdout]  --> src/rich_text.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn var(text: impl AsRef<str>) -> String {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `val` is never used
[INFO] [stdout]   --> src/rich_text.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn val<T: std::fmt::Display>(x: T) -> String {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CACHE_DIR` is never used
[INFO] [stdout]  --> src/config.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const CACHE_DIR: &str = "out/cache";
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK1_NS` is never used
[INFO] [stdout]  --> src/config.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const TASK1_NS: [usize; 6] = [5, 10, 15, 20, 50, 100];
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK2_NS` is never used
[INFO] [stdout]  --> src/config.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const TASK2_NS: [usize; 4] = [5, 10, 50, 100];
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK3_NS` is never used
[INFO] [stdout]  --> src/config.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const TASK3_NS: [usize; 4] = [10, 50, 100, 500];
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK1_COIN_REPS` is never used
[INFO] [stdout]  --> src/config.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const TASK1_COIN_REPS: usize = 200;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK1_COIN_THROWS` is never used
[INFO] [stdout]  --> src/config.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const TASK1_COIN_THROWS: usize = 100;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK2_REPS` is never used
[INFO] [stdout]   --> src/config.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const TASK2_REPS: usize = 200;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TASK3_REPS` is never used
[INFO] [stdout]   --> src/config.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const TASK3_REPS: usize = 300;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SampleExperimentResult` is never constructed
[INFO] [stdout]  --> src/experiments.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct SampleExperimentResult {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvergenceResult` is never constructed
[INFO] [stdout]   --> src/experiments.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ConvergenceResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CltResult` is never constructed
[INFO] [stdout]   --> src/experiments.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct CltResult {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MeansForNsResult` is never constructed
[INFO] [stdout]   --> src/experiments.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct MeansForNsResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PopulationSamplingResult` is never constructed
[INFO] [stdout]   --> src/experiments.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct PopulationSamplingResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_sample_experiment` is never used
[INFO] [stdout]   --> src/experiments.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn run_sample_experiment<F>(n: usize, sampler: F) -> SampleExperimentResult
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_means_for_ns` is never used
[INFO] [stdout]   --> src/experiments.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn run_means_for_ns<F>(ns: &[usize], sampler: F) -> MeansForNsResult
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_convergence_experiment` is never used
[INFO] [stdout]   --> src/experiments.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn run_convergence_experiment<F>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_clt_experiment` is never used
[INFO] [stdout]   --> src/experiments.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn run_clt_experiment<F>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_population_sampling_experiment` is never used
[INFO] [stdout]    --> src/experiments.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn run_population_sampling_experiment<F>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_population_clt_experiment` is never used
[INFO] [stdout]    --> src/experiments.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub fn run_population_clt_experiment<F>(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `optimal_bins_freedman_diaconis` is never used
[INFO] [stdout]    --> src/math.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn optimal_bins_freedman_diaconis(data: &mut [f64]) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_means` is never used
[INFO] [stdout]    --> src/math.rs:166:8
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub fn normalize_means(means: &[f64], mu: f64, sigma: f64, n: usize) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `means_for_ns` is never used
[INFO] [stdout]    --> src/math.rs:171:8
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn means_for_ns<F>(ns: &[usize], sampler: F) -> Vec<(usize, f64)>
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convergence_series` is never used
[INFO] [stdout]    --> src/math.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn convergence_series<F>(max_n: usize, sampler: F) -> Vec<(f64, f64)>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repeated_sample_means` is never used
[INFO] [stdout]    --> src/math.rs:195:8
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub fn repeated_sample_means<F>(n: usize, reps: usize, sampler: F) -> Vec<f64>
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sector` is never read
[INFO] [stdout]    --> src/parser.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct IncomeRecord {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub sector: usize,    // 5..7
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `IncomeRecord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/plot.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl PlotRef {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 18 |     pub fn new(name: impl Into<String>, path: impl Into<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/plot.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl PlotFactory {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn with_size(mut self, width: u32, height: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn hist_and_box(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn normalized_histogram(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn normalized_histogram_auto(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn normalized_histogram_with_normal_overlay(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn line_plot_with_reference(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn convergence_plot(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn clt_hist(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub fn population_hist(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `draw_line_plot_with_reference` and `draw_density_histogram_with_standard_normal` are never used
[INFO] [stdout]    --> src/plot.rs:275:12
[INFO] [stdout]     |
[INFO] [stdout] 255 | impl<'a> ChartConfig<'a> {
[INFO] [stdout]     | ------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn draw_line_plot_with_reference(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     pub fn draw_density_histogram_with_standard_normal(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Note` and `Html` are never constructed
[INFO] [stdout]   --> src/raport.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum Block {
[INFO] [stdout]    |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 15 |     Note { content: String },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 16 |     Html { content: String },
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `IntoBlock` is never used
[INFO] [stdout]   --> src/raport.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub trait IntoBlock {
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `stats_by_group` and `from_usize_f64_pairs` are never used
[INFO] [stdout]    --> src/raport.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl Table {
[INFO] [stdout]     | ---------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn stats_by_group(rows: &[(&str, &SummaryStats)]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn from_usize_f64_pairs(headers: [&str; 2], rows: &[(usize, f64)]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/raport.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | impl SectionBuilder {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn add<B: IntoBlock>(&mut self, block: B) -> &mut Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn add_pair(&mut self, left: PlotRef, right: PlotRef) -> &mut Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn note(&mut self, content: &str) -> &mut Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn html(&mut self, content: &str) -> &mut Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn raw_table<S: ToString>(&mut self, headers: Vec<S>, rows: Vec<Vec<S>>) -> &mut Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn stats_table(&mut self, stats: &SummaryStats) -> &mut Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 279 |     pub fn stats_by_group(&mut self, rows: &[(&str, &SummaryStats)]) -> &mut Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub fn variable_report(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn comparison_report(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `subtitle`, `date`, `date_now`, and `section_standard` are never used
[INFO] [stdout]    --> src/raport.rs:369:12
[INFO] [stdout]     |
[INFO] [stdout] 363 | impl ReportBuilder {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn subtitle(mut self, subtitle: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn date(mut self, date: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn date_now(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn section_standard<F>(self, title: &str, f: F) -> Self
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/runner.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl ExperimentRunner {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub fn without_cache(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn sample_experiment<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn means_for_ns<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn convergence<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn clt<F>(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn population_sample<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn population_clt<F>(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn cached_stats(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `with_rng` is never used
[INFO] [stdout]   --> src/simulations.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn with_rng<T>(f: impl FnOnce(&mut SmallRng) -> T) -> T {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sample` is never used
[INFO] [stdout]   --> src/simulations.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn sample<T, F>(n: usize, mut generator: F) -> Vec<T>
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repeat` is never used
[INFO] [stdout]   --> src/simulations.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn repeat<T, F>(reps: usize, mut experiment: F) -> Vec<T>
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `experiment_sum` is never used
[INFO] [stdout]   --> src/simulations.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn experiment_sum<F>(n: usize, generator: F) -> f64
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `experiment_mean` is never used
[INFO] [stdout]   --> src/simulations.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn experiment_mean<F>(n: usize, generator: F) -> f64
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dice` is never used
[INFO] [stdout]   --> src/simulations.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn dice() -> f64 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coin` is never used
[INFO] [stdout]   --> src/simulations.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn coin() -> f64 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uniform01` is never used
[INFO] [stdout]   --> src/simulations.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn uniform01() -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exp` is never used
[INFO] [stdout]   --> src/simulations.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn exp(lambda: f64) -> f64 {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `poisson` is never used
[INFO] [stdout]   --> src/simulations.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn poisson(lambda: f64) -> f64 {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normal` is never used
[INFO] [stdout]    --> src/simulations.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn normal(mean: f64, stddev: f64) -> f64 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_population_with_replacement` is never used
[INFO] [stdout]    --> src/simulations.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub fn from_population_with_replacement(population: &[f64]) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sample_from_population_with_replacement` is never used
[INFO] [stdout]    --> src/simulations.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn sample_from_population_with_replacement(population: &[f64], n: usize) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sample_from_population_without_replacement` is never used
[INFO] [stdout]    --> src/simulations.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn sample_from_population_without_replacement(population: &[f64], n: usize) -> Vec<f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append` is never used
[INFO] [stdout]  --> src/task1.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn append(
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fmt` is never used
[INFO] [stdout]  --> src/task2.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn fmt(x: f64) -> String {
[INFO] [stdout]   |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append` is never used
[INFO] [stdout]   --> src/task2.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn append(
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fmt` is never used
[INFO] [stdout]  --> src/task3.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn fmt(x: f64) -> String {
[INFO] [stdout]   |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_incomes` is never used
[INFO] [stdout]   --> src/task3.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn extract_incomes(records: &[IncomeRecord]) -> Vec<f64> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `append` is never used
[INFO] [stdout]   --> src/task3.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn append(
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `slug` is never used
[INFO] [stdout]   --> src/task_1.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn slug(name: &str) -> String {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> src/analysis.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct VariableReport {
[INFO] [stdout]   |            -------------- field in this struct
[INFO] [stdout] 6 |     pub name: String,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_variable` is never used
[INFO] [stdout]   --> src/analysis.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn analyze_variable(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compare_groups` is never used
[INFO] [stdout]   --> src/analysis.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn compare_groups(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `slug` is never used
[INFO] [stdout]   --> src/analysis.rs:88:4
[INFO] [stdout]    |
[INFO] [stdout] 88 | fn slug(s: &str) -> String {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `max`, `q1`, `q3`, `var`, `std`, and `cv` are never used
[INFO] [stdout]    --> src/analysis.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl PrettyStats {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn max(&self) -> String { format!("{:.2}", self.0.max) }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 109 |     pub fn q1(&self) -> String { format!("{:.2}", self.0.q1) }
[INFO] [stdout]     |            ^^
[INFO] [stdout] 110 |     pub fn q3(&self) -> String { format!("{:.2}", self.0.q3) }
[INFO] [stdout]     |            ^^
[INFO] [stdout] 111 |     pub fn var(&self) -> String { format!("{:.2}", self.0.variance_sample) }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 112 |     pub fn std(&self) -> String { format!("{:.2}", self.0.std_dev_sample) }
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 113 |     pub fn cv(&self) -> String { format!("{:.2}%", self.0.cv_sample * 100.0) }
[INFO] [stdout]     |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `key` is never used
[INFO] [stdout]  --> src/naming.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn key(parts: &[&str]) -> String {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `slug` is never used
[INFO] [stdout]  --> src/naming.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn slug(s: &str) -> String {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `b` is never used
[INFO] [stdout]  --> src/rich_text.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn b(text: impl AsRef<str>) -> String {
[INFO] [stdout]   |        ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `em` is never used
[INFO] [stdout]  --> src/rich_text.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn em(text: impl AsRef<str>) -> String {
[INFO] [stdout]   |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `var` is never used
[INFO] [stdout]  --> src/rich_text.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn var(text: impl AsRef<str>) -> String {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `val` is never used
[INFO] [stdout]   --> src/rich_text.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn val<T: std::fmt::Display>(x: T) -> String {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.08s
[INFO] running `Command { std: "docker" "inspect" "5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd", kill_on_drop: false }`
[INFO] [stdout] 5b60043bd57f050b999658859afbbfbe09cad106c913f7105539027d14fbd5bd
