[INFO] cloning repository https://github.com/inxeoz/chak-vcs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/inxeoz/chak-vcs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finxeoz%2Fchak-vcs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finxeoz%2Fchak-vcs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f0ee72ffde9ab4ba202b551346e5f3edad3196b7
[INFO] testing inxeoz/chak-vcs against nightly-2025-01-18 for randomize-layout-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finxeoz%2Fchak-vcs" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/inxeoz/chak-vcs on toolchain nightly-2025-01-18
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly-2025-01-18" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/inxeoz/chak-vcs
[INFO] finished tweaking git repo https://github.com/inxeoz/chak-vcs
[INFO] tweaked toml for git repo https://github.com/inxeoz/chak-vcs written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/inxeoz/chak-vcs 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" "+nightly-2025-01-18" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded anstyle-parse v0.2.6
[INFO] [stderr]   Downloaded globset v0.4.15
[INFO] [stderr]   Downloaded clap_lex v0.7.4
[INFO] [stderr]   Downloaded anstyle-wincon v3.0.6
[INFO] [stderr]   Downloaded anstyle-query v1.1.2
[INFO] [stderr]   Downloaded similar v2.6.0
[INFO] [stderr]   Downloaded ignore v0.4.23
[INFO] [stderr]   Downloaded itertools v0.14.0
[INFO] [stderr]   Downloaded colorchoice v1.0.3
[INFO] [stderr]   Downloaded anstream v0.6.18
[INFO] [stderr]   Downloaded clap v4.5.23
[INFO] [stderr]   Downloaded clap_builder v4.5.23
[INFO] [stderr]   Downloaded crossbeam-deque v0.8.6
[INFO] [stderr]   Downloaded anstyle v1.0.10
[INFO] [stderr]   Downloaded syn v2.0.95
[INFO] [stderr]   Downloaded bstr v1.11.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2025-01-18" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 36a8fa6b16c0814b5fe614a5ab5a20ca7384621dd52fe1d174d1633efdef8524
[INFO] running `Command { std: "docker" "start" "-a" "36a8fa6b16c0814b5fe614a5ab5a20ca7384621dd52fe1d174d1633efdef8524", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "36a8fa6b16c0814b5fe614a5ab5a20ca7384621dd52fe1d174d1633efdef8524", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "36a8fa6b16c0814b5fe614a5ab5a20ca7384621dd52fe1d174d1633efdef8524", kill_on_drop: false }`
[INFO] [stdout] 36a8fa6b16c0814b5fe614a5ab5a20ca7384621dd52fe1d174d1633efdef8524
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2025-01-18" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 52500546a7b0f64ec12ed4471824c2eea335de5b37df7b1fdf43264f0bf8f771
[INFO] running `Command { std: "docker" "start" "-a" "52500546a7b0f64ec12ed4471824c2eea335de5b37df7b1fdf43264f0bf8f771", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.92
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling colorchoice v1.0.3
[INFO] [stderr]    Compiling anstyle-query v1.1.2
[INFO] [stderr]    Compiling anstyle v1.0.10
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling clap_lex v0.7.4
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling anstyle-parse v0.2.6
[INFO] [stderr]    Compiling serde v1.0.217
[INFO] [stderr]    Compiling bstr v1.11.3
[INFO] [stderr]    Compiling serde_json v1.0.135
[INFO] [stderr]    Compiling log v0.4.22
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling hashbrown v0.15.2
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling similar v2.6.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling anstream v0.6.18
[INFO] [stderr]    Compiling clap_builder v4.5.23
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling syn v2.0.95
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling sha2 v0.10.8
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling globset v0.4.15
[INFO] [stderr]    Compiling ignore v0.4.23
[INFO] [stderr]    Compiling serde_derive v1.0.217
[INFO] [stderr]    Compiling clap_derive v4.5.18
[INFO] [stderr]    Compiling clap v4.5.23
[INFO] [stderr]    Compiling indexmap v2.7.0
[INFO] [stderr]    Compiling chak-vcs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `VCS_FOLDER`
[INFO] [stdout]  --> src/add.rs:1:50
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::{GET_CURRENT_DIR, BLOB_FOLD,  VCS_FOLDER, VCS_IGNORE_FILE};
[INFO] [stdout]   |                                                  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `create_file` and `save_to_file`
[INFO] [stdout]  --> src/add.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::macros::{create_file, save_to_file};
[INFO] [stdout]   |                     ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/add.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]  --> src/macros.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VCS_IGNORE_FILE`
[INFO] [stdout]  --> src/util.rs:1:38
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::{GET_CURRENT_DIR, VCS_IGNORE_FILE};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/util.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GitignoreBuilder` and `Gitignore`
[INFO] [stdout]  --> src/util.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use ignore::gitignore::{Gitignore, GitignoreBuilder};
[INFO] [stdout]   |                         ^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ignore::Match`
[INFO] [stdout]  --> src/util.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ignore::Match;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/config.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env`
[INFO] [stdout]  --> src/commandline.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::env;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/status.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `VCS_FOLDER` and `VCS_IGNORE_FILE`
[INFO] [stdout]  --> src/status.rs:3:49
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::config::{BLOB_FOLD, GET_CURRENT_DIR, VCS_FOLDER, VCS_IGNORE_FILE};
[INFO] [stdout]   |                                                 ^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::read_directory_entries`
[INFO] [stdout]  --> src/status.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::util::read_directory_entries;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::builder::Str`
[INFO] [stdout]  --> src/hashing.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use clap::builder::Str;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/hashing.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/hashing.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |             (first.get_one_hash() + &second.get_one_hash()),
[INFO] [stdout]    |             ^                                             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 44 -             (first.get_one_hash() + &second.get_one_hash()),
[INFO] [stdout] 44 +             first.get_one_hash() + &second.get_one_hash(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `similar::TextDiff`
[INFO] [stdout]  --> src/diff.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use similar::TextDiff;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/diff_algo.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]  --> src/diff_algo.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/diff_algo.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::option::Option`
[INFO] [stdout]   --> src/diff_algo.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::option::Option;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]   --> src/diff_algo.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::rc::Rc;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Parser` and `Subcommand`
[INFO] [stdout]   --> src/main.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | use clap::{Parser, Subcommand};
[INFO] [stdout]    |            ^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `env` and `fs`
[INFO] [stdout]   --> src/main.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::{env, fs};
[INFO] [stdout]    |           ^^^  ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::current_dir`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::env::current_dir;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathBuf` and `Path`
[INFO] [stdout]   --> src/main.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GitignoreBuilder` and `Gitignore`
[INFO] [stdout]   --> src/main.rs:18:25
[INFO] [stdout]    |
[INFO] [stdout] 18 | use ignore::gitignore::{Gitignore, GitignoreBuilder};
[INFO] [stdout]    |                         ^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ignore::Match`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use ignore::Match;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::commandline::parse_commandline`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::commandline::parse_commandline;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_content_block`
[INFO] [stdout]   --> src/main.rs:22:48
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::diff_algo::{compare_hashed_content, create_content_block, to_interconnected_line};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/add.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let mut builder = GitignoreBuilder::new(path);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/add.rs:59:16
[INFO] [stdout]    |
[INFO] [stdout] 59 |             if let nested_tree  = dir_snapshot(&entry, ignore_build_vec) {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout]    = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/status.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     } else if let file_blob_pointer = HashPointer::from_file(path) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/diff_algo.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 198 |             _ => {}
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/diff_algo.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |             EitherOrBoth::Both((p_index, p_hash), (l_index, l_hash)) => {
[INFO] [stdout]     |             -------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 186 |             EitherOrBoth::Left((p_index, p_hash)) => {
[INFO] [stdout]     |             ------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 195 |             EitherOrBoth::Right((l_index, l_hash)) => {
[INFO] [stdout]     |             -------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 198 |             _ => {}
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `diff::Version` is more private than the item `deserialize_version`
[INFO] [stdout]   --> src/diff.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn deserialize_version(path: &Path) -> Vec<Version> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `deserialize_version` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `diff::Version` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/diff.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Version {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `diff::Version` is more private than the item `serialize_version`
[INFO] [stdout]   --> src/diff.rs:58:1
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn serialize_version(data: &Vec<Version>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `serialize_version` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `diff::Version` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/diff.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Version {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init` is never used
[INFO] [stdout]  --> src/init.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn init() {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add` is never used
[INFO] [stdout]   --> src/add.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn add(inputs: &Vec<String>) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_all` is never used
[INFO] [stdout]   --> src/add.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn add_all() {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_snapshot` is never used
[INFO] [stdout]   --> src/add.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn dir_snapshot(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_ignore_local_level` is never used
[INFO] [stdout]   --> src/add.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn parse_ignore_local_level(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_fold` is never used
[INFO] [stdout]  --> src/macros.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn create_fold(dir: &Path) {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_file` is never used
[INFO] [stdout]   --> src/macros.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn create_file(parent_fold: &Path, blob_pointer: &HashPointer, content: Option<String>) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_to_file` is never used
[INFO] [stdout]   --> src/macros.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn save_to_file(file_path: &Path, content: &str, append: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `input_from_commandline` is never used
[INFO] [stdout]   --> src/macros.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn input_from_commandline(prompt: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_vcs_presence_in_subdir` is never used
[INFO] [stdout]  --> src/util.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn check_vcs_presence_in_subdir(vcs_name: &str) -> Vec<PathBuf> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_vcs_presence` is never used
[INFO] [stdout]   --> src/util.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn check_vcs_presence() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_directory_entries` is never used
[INFO] [stdout]   --> src/util.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn read_directory_entries(path: &Path, curr_dir_from_root: Option<&Path>) -> Vec<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VCS_FOLDER` is never used
[INFO] [stdout]  --> src/config.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub static VCS_FOLDER: &str = ".chak";
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VCS_IGNORE_FILE` is never used
[INFO] [stdout]  --> src/config.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub static  VCS_IGNORE_FILE: &str = ".ignore";
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `BLOB_FOLD` is never used
[INFO] [stdout]   --> src/config.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn BLOB_FOLD() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `VERSION_FOLD` is never used
[INFO] [stdout]   --> src/config.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn VERSION_FOLD() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_commandline` is never used
[INFO] [stdout]   --> src/commandline.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn parse_commandline() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_status` is never used
[INFO] [stdout]  --> src/status.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn get_status(path: &Path) -> Vec<PathBuf> {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/hashing.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout] 24  | impl HashPointer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 25  |
[INFO] [stdout] 26  |     pub fn replace(&mut self, hash_pointer: &HashPointer) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42  |     pub fn combine(first: &Self, second: &Self) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48  |     pub fn update_hash(&mut self, content: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53  |     pub fn get_fold_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57  |     pub fn get_file_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65  |     pub fn get_path(&self) -> PathBuf {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn from_file(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     pub fn save_blob(file_path: &Path, save_dir: &Path) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn save_blob_from_content(save_dir: &Path, content: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn hash_from_pointers(pointers: Vec<Self>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn from_path(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn from_hash_string_vec(strings: &[String]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_versioning` is never used
[INFO] [stdout]   --> src/diff.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn start_versioning(file_path: &Path) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deserialize_version` is never used
[INFO] [stdout]   --> src/diff.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn deserialize_version(path: &Path) -> Vec<Version> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_version` is never used
[INFO] [stdout]   --> src/diff.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn serialize_version(data: &Vec<Version>) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NOCHANGE` and `REPLACE` are never constructed
[INFO] [stdout]   --> src/diff_algo.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum DiffLineType {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 18 |     NOCHANGE,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 19 |     REPLACE,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiffLineType` 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/diff_algo.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Line {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 27 |     pub fn new(line: String) -> Line {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `diff_line_type` and `copy_from_live` are never read
[INFO] [stdout]   --> src/diff_algo.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct DiffLine {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 43 |     #[serde(skip)]
[INFO] [stdout] 44 |     pub diff_line_type: DiffLineType,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     #[serde(skip)]
[INFO] [stdout] 46 |     pub copy_from_live: Line,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiffLine` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> src/diff_algo.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl DiffLine {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 50 |     pub fn from(prev_line: Line, live_line: Line) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `add` are never used
[INFO] [stdout]   --> src/diff_algo.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | impl Block {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 77 |     pub fn from(diff_line: DiffLine) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn add(&mut self, diff_line: DiffLine) -> Result<(), String> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from`, and `add` are never used
[INFO] [stdout]    --> src/diff_algo.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl ContentBlock {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 104 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn from(block: Block) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn add(&mut self, diff_line: DiffLine) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_to_lines` is never used
[INFO] [stdout]    --> src/diff_algo.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn file_to_lines(file_path: &Path) -> Vec<Line> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_content_block` is never used
[INFO] [stdout]    --> src/diff_algo.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn create_content_block(prev: &Path, live: &Path) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `GET_CURRENT_DIR` should have a snake case name
[INFO] [stdout]   --> src/config.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn GET_CURRENT_DIR() -> &'static PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_current_dir`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `BLOB_FOLD` should have a snake case name
[INFO] [stdout]   --> src/config.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn BLOB_FOLD() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^ help: convert the identifier to snake case: `blob_fold`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `VERSION_FOLD` should have a snake case name
[INFO] [stdout]   --> src/config.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn VERSION_FOLD() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^ help: convert the identifier to snake case: `version_fold`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prev_DiffLine` should have a snake case name
[INFO] [stdout]    --> src/diff_algo.rs:229:32
[INFO] [stdout]     |
[INFO] [stdout] 229 |             EitherOrBoth::Left(prev_DiffLine) => {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^ help: convert the identifier to snake case: `prev_diff_line`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `live_DiffLine` should have a snake case name
[INFO] [stdout]    --> src/diff_algo.rs:233:33
[INFO] [stdout]     |
[INFO] [stdout] 233 |             EitherOrBoth::Right(live_DiffLine) => {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^ help: convert the identifier to snake case: `live_diff_line`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 25.15s
[INFO] running `Command { std: "docker" "inspect" "52500546a7b0f64ec12ed4471824c2eea335de5b37df7b1fdf43264f0bf8f771", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "52500546a7b0f64ec12ed4471824c2eea335de5b37df7b1fdf43264f0bf8f771", kill_on_drop: false }`
[INFO] [stdout] 52500546a7b0f64ec12ed4471824c2eea335de5b37df7b1fdf43264f0bf8f771
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2025-01-18" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e9cf89c0eb3a8af6cbec739fcb15d5461fdb8f98410bd67c2709160fe4acaab5
[INFO] running `Command { std: "docker" "start" "-a" "e9cf89c0eb3a8af6cbec739fcb15d5461fdb8f98410bd67c2709160fe4acaab5", kill_on_drop: false }`
[INFO] [stderr]    Compiling chak-vcs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `VCS_FOLDER`
[INFO] [stdout]  --> src/add.rs:1:50
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::{GET_CURRENT_DIR, BLOB_FOLD,  VCS_FOLDER, VCS_IGNORE_FILE};
[INFO] [stdout]   |                                                  ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `create_file` and `save_to_file`
[INFO] [stdout]  --> src/add.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::macros::{create_file, save_to_file};
[INFO] [stdout]   |                     ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/add.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PathBuf`
[INFO] [stdout]  --> src/macros.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VCS_IGNORE_FILE`
[INFO] [stdout]  --> src/util.rs:1:38
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::config::{GET_CURRENT_DIR, VCS_IGNORE_FILE};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/util.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GitignoreBuilder` and `Gitignore`
[INFO] [stdout]  --> src/util.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use ignore::gitignore::{Gitignore, GitignoreBuilder};
[INFO] [stdout]   |                         ^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ignore::Match`
[INFO] [stdout]  --> src/util.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ignore::Match;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/config.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env`
[INFO] [stdout]  --> src/commandline.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::env;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/status.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `VCS_FOLDER` and `VCS_IGNORE_FILE`
[INFO] [stdout]  --> src/status.rs:3:49
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::config::{BLOB_FOLD, GET_CURRENT_DIR, VCS_FOLDER, VCS_IGNORE_FILE};
[INFO] [stdout]   |                                                 ^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::read_directory_entries`
[INFO] [stdout]  --> src/status.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::util::read_directory_entries;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::builder::Str`
[INFO] [stdout]  --> src/hashing.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use clap::builder::Str;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Add`
[INFO] [stdout]  --> src/hashing.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::ops::Add;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/hashing.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |             (first.get_one_hash() + &second.get_one_hash()),
[INFO] [stdout]    |             ^                                             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 44 -             (first.get_one_hash() + &second.get_one_hash()),
[INFO] [stdout] 44 +             first.get_one_hash() + &second.get_one_hash(),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `similar::TextDiff`
[INFO] [stdout]  --> src/diff.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use similar::TextDiff;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/diff_algo.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]  --> src/diff_algo.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/diff_algo.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::option::Option`
[INFO] [stdout]   --> src/diff_algo.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::option::Option;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]   --> src/diff_algo.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::rc::Rc;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Parser` and `Subcommand`
[INFO] [stdout]   --> src/main.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | use clap::{Parser, Subcommand};
[INFO] [stdout]    |            ^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `env` and `fs`
[INFO] [stdout]   --> src/main.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::{env, fs};
[INFO] [stdout]    |           ^^^  ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::current_dir`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::env::current_dir;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathBuf` and `Path`
[INFO] [stdout]   --> src/main.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GitignoreBuilder` and `Gitignore`
[INFO] [stdout]   --> src/main.rs:18:25
[INFO] [stdout]    |
[INFO] [stdout] 18 | use ignore::gitignore::{Gitignore, GitignoreBuilder};
[INFO] [stdout]    |                         ^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ignore::Match`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use ignore::Match;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::commandline::parse_commandline`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::commandline::parse_commandline;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `create_content_block`
[INFO] [stdout]   --> src/main.rs:22:48
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::diff_algo::{compare_hashed_content, create_content_block, to_interconnected_line};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/add.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let mut builder = GitignoreBuilder::new(path);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/add.rs:59:16
[INFO] [stdout]    |
[INFO] [stdout] 59 |             if let nested_tree  = dir_snapshot(&entry, ignore_build_vec) {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout]    = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: irrefutable `if let` pattern
[INFO] [stdout]   --> src/status.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     } else if let file_blob_pointer = HashPointer::from_file(path) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stdout]    = help: consider replacing the `if let` with a `let`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/diff_algo.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 198 |             _ => {}
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/diff_algo.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |             EitherOrBoth::Both((p_index, p_hash), (l_index, l_hash)) => {
[INFO] [stdout]     |             -------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 186 |             EitherOrBoth::Left((p_index, p_hash)) => {
[INFO] [stdout]     |             ------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 195 |             EitherOrBoth::Right((l_index, l_hash)) => {
[INFO] [stdout]     |             -------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 198 |             _ => {}
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `diff::Version` is more private than the item `deserialize_version`
[INFO] [stdout]   --> src/diff.rs:51:1
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn deserialize_version(path: &Path) -> Vec<Version> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `deserialize_version` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `diff::Version` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/diff.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Version {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `diff::Version` is more private than the item `serialize_version`
[INFO] [stdout]   --> src/diff.rs:58:1
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn serialize_version(data: &Vec<Version>) -> String {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `serialize_version` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `diff::Version` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/diff.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Version {
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init` is never used
[INFO] [stdout]  --> src/init.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn init() {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add` is never used
[INFO] [stdout]   --> src/add.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn add(inputs: &Vec<String>) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_all` is never used
[INFO] [stdout]   --> src/add.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn add_all() {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_snapshot` is never used
[INFO] [stdout]   --> src/add.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn dir_snapshot(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_ignore_local_level` is never used
[INFO] [stdout]   --> src/add.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn parse_ignore_local_level(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_fold` is never used
[INFO] [stdout]  --> src/macros.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn create_fold(dir: &Path) {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_file` is never used
[INFO] [stdout]   --> src/macros.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn create_file(parent_fold: &Path, blob_pointer: &HashPointer, content: Option<String>) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_to_file` is never used
[INFO] [stdout]   --> src/macros.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn save_to_file(file_path: &Path, content: &str, append: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `input_from_commandline` is never used
[INFO] [stdout]   --> src/macros.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn input_from_commandline(prompt: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_vcs_presence_in_subdir` is never used
[INFO] [stdout]  --> src/util.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn check_vcs_presence_in_subdir(vcs_name: &str) -> Vec<PathBuf> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_vcs_presence` is never used
[INFO] [stdout]   --> src/util.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn check_vcs_presence() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_directory_entries` is never used
[INFO] [stdout]   --> src/util.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn read_directory_entries(path: &Path, curr_dir_from_root: Option<&Path>) -> Vec<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VCS_FOLDER` is never used
[INFO] [stdout]  --> src/config.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub static VCS_FOLDER: &str = ".chak";
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VCS_IGNORE_FILE` is never used
[INFO] [stdout]  --> src/config.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub static  VCS_IGNORE_FILE: &str = ".ignore";
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `BLOB_FOLD` is never used
[INFO] [stdout]   --> src/config.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn BLOB_FOLD() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `VERSION_FOLD` is never used
[INFO] [stdout]   --> src/config.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn VERSION_FOLD() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_commandline` is never used
[INFO] [stdout]   --> src/commandline.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn parse_commandline() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_status` is never used
[INFO] [stdout]  --> src/status.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn get_status(path: &Path) -> Vec<PathBuf> {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/hashing.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout] 24  | impl HashPointer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 25  |
[INFO] [stdout] 26  |     pub fn replace(&mut self, hash_pointer: &HashPointer) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42  |     pub fn combine(first: &Self, second: &Self) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48  |     pub fn update_hash(&mut self, content: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53  |     pub fn get_fold_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57  |     pub fn get_file_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65  |     pub fn get_path(&self) -> PathBuf {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn from_file(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84  |     pub fn save_blob(file_path: &Path, save_dir: &Path) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn save_blob_from_content(save_dir: &Path, content: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn hash_from_pointers(pointers: Vec<Self>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn from_path(path: &Path) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn from_hash_string_vec(strings: &[String]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_versioning` is never used
[INFO] [stdout]   --> src/diff.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn start_versioning(file_path: &Path) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deserialize_version` is never used
[INFO] [stdout]   --> src/diff.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn deserialize_version(path: &Path) -> Vec<Version> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_version` is never used
[INFO] [stdout]   --> src/diff.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn serialize_version(data: &Vec<Version>) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `NOCHANGE` and `REPLACE` are never constructed
[INFO] [stdout]   --> src/diff_algo.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum DiffLineType {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 18 |     NOCHANGE,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 19 |     REPLACE,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiffLineType` 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/diff_algo.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Line {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 27 |     pub fn new(line: String) -> Line {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `diff_line_type` and `copy_from_live` are never read
[INFO] [stdout]   --> src/diff_algo.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct DiffLine {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 43 |     #[serde(skip)]
[INFO] [stdout] 44 |     pub diff_line_type: DiffLineType,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 45 |     #[serde(skip)]
[INFO] [stdout] 46 |     pub copy_from_live: Line,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DiffLine` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from` is never used
[INFO] [stdout]   --> src/diff_algo.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl DiffLine {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 50 |     pub fn from(prev_line: Line, live_line: Line) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from` and `add` are never used
[INFO] [stdout]   --> src/diff_algo.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | impl Block {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 77 |     pub fn from(diff_line: DiffLine) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn add(&mut self, diff_line: DiffLine) -> Result<(), String> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from`, and `add` are never used
[INFO] [stdout]    --> src/diff_algo.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl ContentBlock {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 104 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn from(block: Block) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn add(&mut self, diff_line: DiffLine) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_to_lines` is never used
[INFO] [stdout]    --> src/diff_algo.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn file_to_lines(file_path: &Path) -> Vec<Line> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_content_block` is never used
[INFO] [stdout]    --> src/diff_algo.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn create_content_block(prev: &Path, live: &Path) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `GET_CURRENT_DIR` should have a snake case name
[INFO] [stdout]   --> src/config.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn GET_CURRENT_DIR() -> &'static PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_current_dir`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `BLOB_FOLD` should have a snake case name
[INFO] [stdout]   --> src/config.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn BLOB_FOLD() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^ help: convert the identifier to snake case: `blob_fold`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `VERSION_FOLD` should have a snake case name
[INFO] [stdout]   --> src/config.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn VERSION_FOLD() -> PathBuf {
[INFO] [stdout]    |        ^^^^^^^^^^^^ help: convert the identifier to snake case: `version_fold`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prev_DiffLine` should have a snake case name
[INFO] [stdout]    --> src/diff_algo.rs:229:32
[INFO] [stdout]     |
[INFO] [stdout] 229 |             EitherOrBoth::Left(prev_DiffLine) => {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^ help: convert the identifier to snake case: `prev_diff_line`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `live_DiffLine` should have a snake case name
[INFO] [stdout]    --> src/diff_algo.rs:233:33
[INFO] [stdout]     |
[INFO] [stdout] 233 |             EitherOrBoth::Right(live_DiffLine) => {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^ help: convert the identifier to snake case: `live_diff_line`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.91s
[INFO] running `Command { std: "docker" "inspect" "e9cf89c0eb3a8af6cbec739fcb15d5461fdb8f98410bd67c2709160fe4acaab5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e9cf89c0eb3a8af6cbec739fcb15d5461fdb8f98410bd67c2709160fe4acaab5", kill_on_drop: false }`
[INFO] [stdout] e9cf89c0eb3a8af6cbec739fcb15d5461fdb8f98410bd67c2709160fe4acaab5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:819108c5571ea2e421544af4d832f968d213c87fbe3707a016657f43d2f853bc" "/opt/rustwide/cargo-home/bin/cargo" "+nightly-2025-01-18" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] f61227fb2d6a03c2a1e3a69311d5f36ceaa55cb0e3989d97f0338d0819650546
[INFO] running `Command { std: "docker" "start" "-a" "f61227fb2d6a03c2a1e3a69311d5f36ceaa55cb0e3989d97f0338d0819650546", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `VCS_FOLDER`
[INFO] [stderr]  --> src/add.rs:1:50
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::config::{GET_CURRENT_DIR, BLOB_FOLD,  VCS_FOLDER, VCS_IGNORE_FILE};
[INFO] [stderr]   |                                                  ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `create_file` and `save_to_file`
[INFO] [stderr]  --> src/add.rs:2:21
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::macros::{create_file, save_to_file};
[INFO] [stderr]   |                     ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::fs`
[INFO] [stderr]  --> src/add.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::fs;
[INFO] [stderr]   |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `PathBuf`
[INFO] [stderr]  --> src/macros.rs:5:23
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::path::{Path, PathBuf};
[INFO] [stderr]   |                       ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `VCS_IGNORE_FILE`
[INFO] [stderr]  --> src/util.rs:1:38
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::config::{GET_CURRENT_DIR, VCS_IGNORE_FILE};
[INFO] [stderr]   |                                      ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashSet`
[INFO] [stderr]  --> src/util.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::collections::HashSet;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `GitignoreBuilder` and `Gitignore`
[INFO] [stderr]  --> src/util.rs:6:25
[INFO] [stderr]   |
[INFO] [stderr] 6 | use ignore::gitignore::{Gitignore, GitignoreBuilder};
[INFO] [stderr]   |                         ^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ignore::Match`
[INFO] [stderr]  --> src/util.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use ignore::Match;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Path`
[INFO] [stderr]  --> src/config.rs:3:17
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::path::{Path, PathBuf};
[INFO] [stderr]   |                 ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::env`
[INFO] [stderr]  --> src/commandline.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::env;
[INFO] [stderr]   |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashSet`
[INFO] [stderr]  --> src/status.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::collections::HashSet;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `VCS_FOLDER` and `VCS_IGNORE_FILE`
[INFO] [stderr]  --> src/status.rs:3:49
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::config::{BLOB_FOLD, GET_CURRENT_DIR, VCS_FOLDER, VCS_IGNORE_FILE};
[INFO] [stderr]   |                                                 ^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::util::read_directory_entries`
[INFO] [stderr]  --> src/status.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::util::read_directory_entries;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `clap::builder::Str`
[INFO] [stderr]  --> src/hashing.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use clap::builder::Str;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ops::Add`
[INFO] [stderr]  --> src/hashing.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::ops::Add;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around function argument
[INFO] [stderr]   --> src/hashing.rs:44:13
[INFO] [stderr]    |
[INFO] [stderr] 44 |             (first.get_one_hash() + &second.get_one_hash()),
[INFO] [stderr]    |             ^                                             ^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 44 -             (first.get_one_hash() + &second.get_one_hash()),
[INFO] [stderr] 44 +             first.get_one_hash() + &second.get_one_hash(),
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `similar::TextDiff`
[INFO] [stderr]  --> src/diff.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use similar::TextDiff;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::cell::RefCell`
[INFO] [stderr]  --> src/diff_algo.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::cell::RefCell;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::hash::Hash`
[INFO] [stderr]  --> src/diff_algo.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::hash::Hash;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io`
[INFO] [stderr]  --> src/diff_algo.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use std::io;
[INFO] [stderr]   |     ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::option::Option`
[INFO] [stderr]   --> src/diff_algo.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use std::option::Option;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::rc::Rc`
[INFO] [stderr]   --> src/diff_algo.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | use std::rc::Rc;
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Parser` and `Subcommand`
[INFO] [stderr]   --> src/main.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | use clap::{Parser, Subcommand};
[INFO] [stderr]    |            ^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `env` and `fs`
[INFO] [stderr]   --> src/main.rs:14:11
[INFO] [stderr]    |
[INFO] [stderr] 14 | use std::{env, fs};
[INFO] [stderr]    |           ^^^  ^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::collections::HashMap`
[INFO] [stderr]   --> src/main.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use std::collections::HashMap;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::env::current_dir`
[INFO] [stderr]   --> src/main.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | use std::env::current_dir;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `PathBuf` and `Path`
[INFO] [stderr]   --> src/main.rs:17:17
[INFO] [stderr]    |
[INFO] [stderr] 17 | use std::path::{Path, PathBuf};
[INFO] [stderr]    |                 ^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `GitignoreBuilder` and `Gitignore`
[INFO] [stderr]   --> src/main.rs:18:25
[INFO] [stderr]    |
[INFO] [stderr] 18 | use ignore::gitignore::{Gitignore, GitignoreBuilder};
[INFO] [stderr]    |                         ^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ignore::Match`
[INFO] [stderr]   --> src/main.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 | use ignore::Match;
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::commandline::parse_commandline`
[INFO] [stderr]   --> src/main.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use crate::commandline::parse_commandline;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `create_content_block`
[INFO] [stderr]   --> src/main.rs:22:48
[INFO] [stderr]    |
[INFO] [stderr] 22 | use crate::diff_algo::{compare_hashed_content, create_content_block, to_interconnected_line};
[INFO] [stderr]    |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/add.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 21 |     let mut builder = GitignoreBuilder::new(path);
[INFO] [stderr]    |         ----^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]   --> src/add.rs:59:16
[INFO] [stderr]    |
[INFO] [stderr] 59 |             if let nested_tree  = dir_snapshot(&entry, ignore_build_vec) {
[INFO] [stderr]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]    = help: consider replacing the `if let` with a `let`
[INFO] [stderr]    = note: `#[warn(irrefutable_let_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: irrefutable `if let` pattern
[INFO] [stderr]   --> src/status.rs:15:15
[INFO] [stderr]    |
[INFO] [stderr] 15 |     } else if let file_blob_pointer = HashPointer::from_file(path) {
[INFO] [stderr]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: this pattern will always match, so the `if let` is useless
[INFO] [stderr]    = help: consider replacing the `if let` with a `let`
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/diff_algo.rs:198:13
[INFO] [stderr]     |
[INFO] [stderr] 198 |             _ => {}
[INFO] [stderr]     |             ^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr] note: multiple earlier patterns match some of the same values
[INFO] [stderr]    --> src/diff_algo.rs:198:13
[INFO] [stderr]     |
[INFO] [stderr] 170 |             EitherOrBoth::Both((p_index, p_hash), (l_index, l_hash)) => {
[INFO] [stderr]     |             -------------------------------------------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 186 |             EitherOrBoth::Left((p_index, p_hash)) => {
[INFO] [stderr]     |             ------------------------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 195 |             EitherOrBoth::Right((l_index, l_hash)) => {
[INFO] [stderr]     |             -------------------------------------- matches some of the same values
[INFO] [stderr] ...
[INFO] [stderr] 198 |             _ => {}
[INFO] [stderr]     |             ^ collectively making this unreachable
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: type `diff::Version` is more private than the item `deserialize_version`
[INFO] [stderr]   --> src/diff.rs:51:1
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub fn deserialize_version(path: &Path) -> Vec<Version> {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `deserialize_version` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `diff::Version` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/diff.rs:11:1
[INFO] [stderr]    |
[INFO] [stderr] 11 | struct Version {
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: type `diff::Version` is more private than the item `serialize_version`
[INFO] [stderr]   --> src/diff.rs:58:1
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub fn serialize_version(data: &Vec<Version>) -> String {
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `serialize_version` is reachable at visibility `pub(crate)`
[INFO] [stderr]    |
[INFO] [stderr] note: but type `diff::Version` is only usable at visibility `pub(self)`
[INFO] [stderr]   --> src/diff.rs:11:1
[INFO] [stderr]    |
[INFO] [stderr] 11 | struct Version {
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `init` is never used
[INFO] [stderr]  --> src/init.rs:7:8
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub fn init() {
[INFO] [stderr]   |        ^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `add` is never used
[INFO] [stderr]   --> src/add.rs:11:8
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub fn add(inputs: &Vec<String>) {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `add_all` is never used
[INFO] [stderr]   --> src/add.rs:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub fn add_all() {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `dir_snapshot` is never used
[INFO] [stderr]   --> src/add.rs:28:8
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub fn dir_snapshot(
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_ignore_local_level` is never used
[INFO] [stderr]   --> src/add.rs:79:8
[INFO] [stderr]    |
[INFO] [stderr] 79 | pub fn parse_ignore_local_level(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_fold` is never used
[INFO] [stderr]  --> src/macros.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub fn create_fold(dir: &Path) {
[INFO] [stderr]   |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_file` is never used
[INFO] [stderr]   --> src/macros.rs:13:8
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub fn create_file(parent_fold: &Path, blob_pointer: &HashPointer, content: Option<String>) {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `save_to_file` is never used
[INFO] [stderr]   --> src/macros.rs:35:8
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub fn save_to_file(file_path: &Path, content: &str, append: bool) {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `input_from_commandline` is never used
[INFO] [stderr]   --> src/macros.rs:65:8
[INFO] [stderr]    |
[INFO] [stderr] 65 | pub fn input_from_commandline(prompt: &str) -> String {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_vcs_presence_in_subdir` is never used
[INFO] [stderr]  --> src/util.rs:9:8
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub fn check_vcs_presence_in_subdir(vcs_name: &str) -> Vec<PathBuf> {
[INFO] [stderr]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_vcs_presence` is never used
[INFO] [stderr]   --> src/util.rs:28:8
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub fn check_vcs_presence() -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `read_directory_entries` is never used
[INFO] [stderr]   --> src/util.rs:44:8
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub fn read_directory_entries(path: &Path, curr_dir_from_root: Option<&Path>) -> Vec<PathBuf> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `VCS_FOLDER` is never used
[INFO] [stderr]  --> src/config.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub static VCS_FOLDER: &str = ".chak";
[INFO] [stderr]   |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `VCS_IGNORE_FILE` is never used
[INFO] [stderr]  --> src/config.rs:8:13
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub static  VCS_IGNORE_FILE: &str = ".ignore";
[INFO] [stderr]   |             ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `BLOB_FOLD` is never used
[INFO] [stderr]   --> src/config.rs:22:8
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub fn BLOB_FOLD() -> PathBuf {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `VERSION_FOLD` is never used
[INFO] [stderr]   --> src/config.rs:26:8
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub fn VERSION_FOLD() -> PathBuf {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_commandline` is never used
[INFO] [stderr]   --> src/commandline.rs:63:8
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub fn parse_commandline() {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_status` is never used
[INFO] [stderr]  --> src/status.rs:7:8
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub fn get_status(path: &Path) -> Vec<PathBuf> {
[INFO] [stderr]   |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/hashing.rs:26:12
[INFO] [stderr]     |
[INFO] [stderr] 24  | impl HashPointer {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr] 25  |
[INFO] [stderr] 26  |     pub fn replace(&mut self, hash_pointer: &HashPointer) {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 42  |     pub fn combine(first: &Self, second: &Self) -> Self {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 48  |     pub fn update_hash(&mut self, content: String) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 53  |     pub fn get_fold_name(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57  |     pub fn get_file_name(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 65  |     pub fn get_path(&self) -> PathBuf {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 69  |     pub fn from_file(path: &Path) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 84  |     pub fn save_blob(file_path: &Path, save_dir: &Path) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 91  |     pub fn save_blob_from_content(save_dir: &Path, content: String) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 106 |     pub fn hash_from_pointers(pointers: Vec<Self>) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 119 |     pub fn from_path(path: &Path) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 135 |     pub fn from_hash_string_vec(strings: &[String]) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `start_versioning` is never used
[INFO] [stderr]   --> src/diff.rs:22:8
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub fn start_versioning(file_path: &Path) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `deserialize_version` is never used
[INFO] [stderr]   --> src/diff.rs:51:8
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub fn deserialize_version(path: &Path) -> Vec<Version> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `serialize_version` is never used
[INFO] [stderr]   --> src/diff.rs:58:8
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub fn serialize_version(data: &Vec<Version>) -> String {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `NOCHANGE` and `REPLACE` are never constructed
[INFO] [stderr]   --> src/diff_algo.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub enum DiffLineType {
[INFO] [stderr]    |          ------------ variants in this enum
[INFO] [stderr] 18 |     NOCHANGE,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 19 |     REPLACE,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DiffLineType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/diff_algo.rs:27:12
[INFO] [stderr]    |
[INFO] [stderr] 26 | impl Line {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 27 |     pub fn new(line: String) -> Line {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `diff_line_type` and `copy_from_live` are never read
[INFO] [stderr]   --> src/diff_algo.rs:44:9
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub struct DiffLine {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] 43 |     #[serde(skip)]
[INFO] [stderr] 44 |     pub diff_line_type: DiffLineType,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 45 |     #[serde(skip)]
[INFO] [stderr] 46 |     pub copy_from_live: Line,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `DiffLine` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `from` is never used
[INFO] [stderr]   --> src/diff_algo.rs:50:12
[INFO] [stderr]    |
[INFO] [stderr] 49 | impl DiffLine {
[INFO] [stderr]    | ------------- associated function in this implementation
[INFO] [stderr] 50 |     pub fn from(prev_line: Line, live_line: Line) -> Self {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from` and `add` are never used
[INFO] [stderr]   --> src/diff_algo.rs:77:12
[INFO] [stderr]    |
[INFO] [stderr] 76 | impl Block {
[INFO] [stderr]    | ---------- associated items in this implementation
[INFO] [stderr] 77 |     pub fn from(diff_line: DiffLine) -> Self {
[INFO] [stderr]    |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 85 |     pub fn add(&mut self, diff_line: DiffLine) -> Result<(), String> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `from`, and `add` are never used
[INFO] [stderr]    --> src/diff_algo.rs:104:12
[INFO] [stderr]     |
[INFO] [stderr] 103 | impl ContentBlock {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr] 104 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 110 |     pub fn from(block: Block) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 117 |     pub fn add(&mut self, diff_line: DiffLine) {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `file_to_lines` is never used
[INFO] [stderr]    --> src/diff_algo.rs:208:8
[INFO] [stderr]     |
[INFO] [stderr] 208 | pub fn file_to_lines(file_path: &Path) -> Vec<Line> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_content_block` is never used
[INFO] [stderr]    --> src/diff_algo.rs:217:8
[INFO] [stderr]     |
[INFO] [stderr] 217 | pub fn create_content_block(prev: &Path, live: &Path) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `GET_CURRENT_DIR` should have a snake case name
[INFO] [stderr]   --> src/config.rs:14:8
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub fn GET_CURRENT_DIR() -> &'static PathBuf {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_current_dir`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `BLOB_FOLD` should have a snake case name
[INFO] [stderr]   --> src/config.rs:22:8
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub fn BLOB_FOLD() -> PathBuf {
[INFO] [stderr]    |        ^^^^^^^^^ help: convert the identifier to snake case: `blob_fold`
[INFO] [stderr] 
[INFO] [stderr] warning: function `VERSION_FOLD` should have a snake case name
[INFO] [stderr]   --> src/config.rs:26:8
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub fn VERSION_FOLD() -> PathBuf {
[INFO] [stderr]    |        ^^^^^^^^^^^^ help: convert the identifier to snake case: `version_fold`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `prev_DiffLine` should have a snake case name
[INFO] [stderr]    --> src/diff_algo.rs:229:32
[INFO] [stderr]     |
[INFO] [stderr] 229 |             EitherOrBoth::Left(prev_DiffLine) => {
[INFO] [stderr]     |                                ^^^^^^^^^^^^^ help: convert the identifier to snake case: `prev_diff_line`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `live_DiffLine` should have a snake case name
[INFO] [stderr]    --> src/diff_algo.rs:233:33
[INFO] [stderr]     |
[INFO] [stderr] 233 |             EitherOrBoth::Right(live_DiffLine) => {
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^ help: convert the identifier to snake case: `live_diff_line`
[INFO] [stderr] 
[INFO] [stderr] warning: `chak-vcs` (bin "chak-vcs" test) generated 72 warnings (run `cargo fix --bin "chak-vcs" --tests` to apply 32 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.08s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/chak_vcs-0af8559d742dc591)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "f61227fb2d6a03c2a1e3a69311d5f36ceaa55cb0e3989d97f0338d0819650546", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f61227fb2d6a03c2a1e3a69311d5f36ceaa55cb0e3989d97f0338d0819650546", kill_on_drop: false }`
[INFO] [stdout] f61227fb2d6a03c2a1e3a69311d5f36ceaa55cb0e3989d97f0338d0819650546
