[INFO] cloning repository https://github.com/LinuxProativo/sandbox_utils
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/LinuxProativo/sandbox_utils" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLinuxProativo%2Fsandbox_utils", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLinuxProativo%2Fsandbox_utils'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 53adbb5123576afc98dcf553b901b4363b3fd94a
[INFO] documenting LinuxProativo/sandbox_utils against da3f5c31e5535b3dc210067de660a45784ae1e9c for pr-162169
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLinuxProativo%2Fsandbox_utils" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/LinuxProativo/sandbox_utils
[INFO] finished tweaking git repo https://github.com/LinuxProativo/sandbox_utils
[INFO] tweaked toml for git repo https://github.com/LinuxProativo/sandbox_utils written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/LinuxProativo/sandbox_utils on toolchain da3f5c31e5535b3dc210067de660a45784ae1e9c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 138 packages to highest Rust 1.100.0-nightly compatible versions
[INFO] [stderr]       Adding zstd v0.13.3 (available: v0.14.0)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e
[INFO] running `Command { std: "docker" "start" "b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e", 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" "b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e", 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" "b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling find-msvc-tools v0.1.12
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling pkg-config v0.3.34
[INFO] [stderr]    Compiling object v0.39.1
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]    Compiling winnow v1.0.4
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]     Checking bitflags v2.13.1
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling indexmap v2.14.2
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.5
[INFO] [stderr]     Checking zeroize v1.9.0
[INFO] [stderr]    Compiling cfg_aliases v0.2.2
[INFO] [stderr]    Compiling rustversion v1.0.23
[INFO] [stderr]    Compiling jobserver v0.1.35
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]     Checking log v0.4.34
[INFO] [stderr]    Compiling cc v1.4.5
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking rustls-pki-types v1.15.1
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]    Compiling toml_parser v1.1.3+spec-1.1.0
[INFO] [stderr]    Compiling zerocopy v0.8.56
[INFO] [stderr]    Compiling crc32fast v1.5.1
[INFO] [stderr]     Checking smallvec v1.16.0
[INFO] [stderr]    Compiling ref-cast v1.0.27
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling toml_edit v0.25.13+spec-1.1.0
[INFO] [stderr]     Checking aho-corasick v1.1.5
[INFO] [stderr]    Compiling fuser v0.17.0
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling rustls v0.23.43
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling zstd-sys v2.1.0+zstd.1.5.7
[INFO] [stderr]    Compiling stacker v0.1.25
[INFO] [stderr]    Compiling blake3 v1.8.7
[INFO] [stderr]    Compiling lzma-sys v0.1.20
[INFO] [stderr]     Checking regex-syntax v0.8.11
[INFO] [stderr]    Compiling ref-cast-impl v1.0.27
[INFO] [stderr]     Checking bytes v1.12.1
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]    Compiling zstd-safe v7.3.0
[INFO] [stderr]     Checking simd-adler32 v0.3.10
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]    Compiling portable-atomic v1.15.0
[INFO] [stderr]     Checking http v1.5.0
[INFO] [stderr]     Checking miniz_oxide v0.9.1
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling ar_archive_writer v0.5.3
[INFO] [stderr]     Checking regex-automata v0.4.18
[INFO] [stderr]    Compiling psm v0.1.32
[INFO] [stderr]    Compiling num_enum_derive v0.7.6
[INFO] [stderr]    Compiling zerocopy-derive v0.8.56
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking num_enum v0.7.6
[INFO] [stderr]     Checking page_size v0.6.0
[INFO] [stderr]     Checking base64 v0.23.1
[INFO] [stderr]     Checking walkdir_minimal v1.3.0
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]     Checking constant_time_eq v0.4.2
[INFO] [stderr]     Checking arrayvec v0.7.8
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking cpufeatures v0.3.1
[INFO] [stderr]     Checking ureq-proto v0.6.1
[INFO] [stderr]     Checking console v0.16.4
[INFO] [stderr]     Checking recursive_copy v2.1.0
[INFO] [stderr]     Checking flate2 v1.1.10
[INFO] [stderr]     Checking regex v1.13.1
[INFO] [stderr]     Checking obliterate v1.2.0
[INFO] [stderr]     Checking rustls-webpki v0.103.15
[INFO] [stderr]     Checking xattr v1.6.1
[INFO] [stderr]     Checking webpki-roots v1.0.9
[INFO] [stderr]     Checking filetime v0.2.29
[INFO] [stderr]     Checking memmap2 v0.9.11
[INFO] [stderr]     Checking glob v0.3.4
[INFO] [stderr]     Checking utf8-zero v0.8.1
[INFO] [stderr]     Checking unit-prefix v0.5.2
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking tar v0.4.46
[INFO] [stderr]     Checking xz2 v0.1.7
[INFO] [stderr]     Checking which v8.0.6
[INFO] [stderr]     Checking indicatif v0.18.6
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking ureq v3.4.0
[INFO] [stderr]     Checking overlayfs_fuse v1.4.3
[INFO] [stderr]  Documenting sandbox_utils v3.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unknown attribute `norun`
[INFO] [stdout]   --> src/ask.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / //! # Interactive Decision Module
[INFO] [stdout]  2 | | //!
[INFO] [stdout]  3 | | //! This module provides two independent prompting mechanisms:
[INFO] [stdout]  4 | | //!
[INFO] [stdout] ...  |
[INFO] [stdout] 32 | | //!     .ask()?;
[INFO] [stdout] 33 | | //! ```
[INFO] [stdout]    | |_______^
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `no_run` to compile, but not run, the code sample during testing
[INFO] [stdout]    = help: this code block may be skipped during testing, because unknown attributes are treated as markers for code samples written in other programming languages, unless it is also explicitly marked as `rust`
[INFO] [stdout]    = note: `#[warn(rustdoc::invalid_codeblock_attributes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unknown attribute `norun`
[INFO] [stdout]    --> src/ask.rs:230:1
[INFO] [stdout]     |
[INFO] [stdout] 230 | / /// A generic single-question prompt that returns the index of the chosen option.
[INFO] [stdout] 231 | | ///
[INFO] [stdout] 232 | | /// Unlike [`AskConfig`], `DialogConfig` has no knowledge of the overlay system.
[INFO] [stdout] 233 | | /// It simply prints a question, lists labeled options, reads one keystroke, and
[INFO] [stdout] ...   |
[INFO] [stdout] 257 | | /// }
[INFO] [stdout] 258 | | /// ```
[INFO] [stdout]     | |_______^
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `no_run` to compile, but not run, the code sample during testing
[INFO] [stdout]     = help: this code block may be skipped during testing, because unknown attributes are treated as markers for code samples written in other programming languages, unless it is also explicitly marked as `rust`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/ask.rs:111:1
[INFO] [stdout]     |
[INFO] [stdout] 111 | / pub struct AskConfig<'a> {
[INFO] [stdout] 112 | |     /// Path to the upper layer directory to act on.
[INFO] [stdout] 113 | |     upper: PathBuf,
[INFO] [stdout] 114 | |     /// Profiled rootfs path used as the lower layer and commit destination.
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     banner: Option<String>,
[INFO] [stdout] 124 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting config and utilities for Asks.`
[INFO] [stdout]     = help: ends near `Configuration for the interactive upper-layer prompt.`
[INFO] [stdout]     = note: `#[deny(rustdoc::unportable_markdown)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/ask.rs:111:1
[INFO] [stdout]     |
[INFO] [stdout] 111 | / pub struct AskConfig<'a> {
[INFO] [stdout] 112 | |     /// Path to the upper layer directory to act on.
[INFO] [stdout] 113 | |     upper: PathBuf,
[INFO] [stdout] 114 | |     /// Profiled rootfs path used as the lower layer and commit destination.
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |     banner: Option<String>,
[INFO] [stdout] 124 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Configuration for the interactive upper-layer prompt.`
[INFO] [stdout]     = help: ends near `Configuration for the interactive upper-layer prompt.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unknown attribute `norun`
[INFO] [stdout]   |
[INFO] [stdout]   = help: use `no_run` to compile, but not run, the code sample during testing
[INFO] [stdout]   = help: this code block may be skipped during testing, because unknown attributes are treated as markers for code samples written in other programming languages, unless it is also explicitly marked as `rust`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/ask.rs:259:1
[INFO] [stdout]     |
[INFO] [stdout] 259 | / pub struct DialogConfig {
[INFO] [stdout] 260 | |     /// The question printed above the option list.
[INFO] [stdout] 261 | |     question: String,
[INFO] [stdout] 262 | |     /// The labeled options the user can pick from.
[INFO] [stdout] ...   |
[INFO] [stdout] 265 | |     custom_keys: Option<Vec<char>>,
[INFO] [stdout] 266 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting config and utilities for Asks.`
[INFO] [stdout]     = help: ends near `A generic single-question prompt that returns the index of the chosen option.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/ask.rs:259:1
[INFO] [stdout]     |
[INFO] [stdout] 259 | / pub struct DialogConfig {
[INFO] [stdout] 260 | |     /// The question printed above the option list.
[INFO] [stdout] 261 | |     question: String,
[INFO] [stdout] 262 | |     /// The labeled options the user can pick from.
[INFO] [stdout] ...   |
[INFO] [stdout] 265 | |     custom_keys: Option<Vec<char>>,
[INFO] [stdout] 266 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `A generic single-question prompt that returns the index of the chosen option.`
[INFO] [stdout]     = help: ends near `A generic single-question prompt that returns the index of the chosen option.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/ask.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | / pub enum UpperChoice {
[INFO] [stdout] 49 | |     /// Discard all changes in the upper layer.
[INFO] [stdout] 50 | |     Discard,
[INFO] [stdout] 51 | |     /// Keep the upper layer on disk without merging it.
[INFO] [stdout] ...  |
[INFO] [stdout] 58 | |     Cancel,
[INFO] [stdout] 59 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting config and utilities for Asks.`
[INFO] [stdout]    = help: ends near `The action the user can take on a pending upper layer.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/ask.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | / pub enum UpperChoice {
[INFO] [stdout] 49 | |     /// Discard all changes in the upper layer.
[INFO] [stdout] 50 | |     Discard,
[INFO] [stdout] 51 | |     /// Keep the upper layer on disk without merging it.
[INFO] [stdout] ...  |
[INFO] [stdout] 58 | |     Cancel,
[INFO] [stdout] 59 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `The action the user can take on a pending upper layer.`
[INFO] [stdout]    = help: ends near `The action the user can take on a pending upper layer.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/ask.rs:429:1
[INFO] [stdout]     |
[INFO] [stdout] 429 | / pub fn apply_choice(
[INFO] [stdout] 430 | |     choice: &UpperChoice,
[INFO] [stdout] 431 | |     upper: &PathBuf,
[INFO] [stdout] 432 | |     rootfs: &PathBuf,
[INFO] [stdout] ...   |
[INFO] [stdout] 450 | |     Ok(())
[INFO] [stdout] 451 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting config and utilities for Asks.`
[INFO] [stdout]     = help: ends near `from `config`, and calls `overlay_action` — **no `mount()` call**, no sandbox.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/ask.rs:429:1
[INFO] [stdout]     |
[INFO] [stdout] 429 | / pub fn apply_choice(
[INFO] [stdout] 430 | |     choice: &UpperChoice,
[INFO] [stdout] 431 | |     upper: &PathBuf,
[INFO] [stdout] 432 | |     rootfs: &PathBuf,
[INFO] [stdout] ...   |
[INFO] [stdout] 450 | |     Ok(())
[INFO] [stdout] 451 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Builds an [`OverlayFS`] with the upper and rootfs, applies the commit filter`
[INFO] [stdout]     = help: ends near `Builds an [`OverlayFS`] with the upper and rootfs, applies the commit filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dialogs.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const SEPARATOR: &str = "═════════════════════════════════════════════════════════════════";
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]    = help: ends near `A visual horizontal separator line used in terminal output.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dialogs.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const SEPARATOR: &str = "═════════════════════════════════════════════════════════════════";
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `A visual horizontal separator line used in terminal output.`
[INFO] [stdout]    = help: ends near `A visual horizontal separator line used in terminal output.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dialogs.rs:53:1
[INFO] [stdout]    |
[INFO] [stdout] 53 | / pub fn failed_exist_rootfs(run_command: &str, path: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout] 54 | |     let cmd_box = get_cmd_box(&format!("$ {run_command}"), Some(2), None)?;
[INFO] [stdout] 55 | |
[INFO] [stdout] 56 | |     Err(format!(
[INFO] [stdout] ...  |
[INFO] [stdout] 59 | |     ).into())
[INFO] [stdout] 60 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]    = help: ends near `Returns a formatted error message when the rootfs directory is not found.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dialogs.rs:53:1
[INFO] [stdout]    |
[INFO] [stdout] 53 | / pub fn failed_exist_rootfs(run_command: &str, path: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout] 54 | |     let cmd_box = get_cmd_box(&format!("$ {run_command}"), Some(2), None)?;
[INFO] [stdout] 55 | |
[INFO] [stdout] 56 | |     Err(format!(
[INFO] [stdout] ...  |
[INFO] [stdout] 59 | |     ).into())
[INFO] [stdout] 60 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Returns a formatted error message when the rootfs directory is not found.`
[INFO] [stdout]    = help: ends near `Returns a formatted error message when the rootfs directory is not found.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dialogs.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | / pub fn get_cmd_box(
[INFO] [stdout] 27 | |     command: &str,
[INFO] [stdout] 28 | |     indent: Option<usize>,
[INFO] [stdout] 29 | |     size: Option<usize>,
[INFO] [stdout] ...  |
[INFO] [stdout] 42 | |     Ok(format!("{top}\n{middle}\n{bottom}"))
[INFO] [stdout] 43 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]    = help: ends near `Generates a formatted ASCII box containing a command.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dialogs.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | / pub fn get_cmd_box(
[INFO] [stdout] 27 | |     command: &str,
[INFO] [stdout] 28 | |     indent: Option<usize>,
[INFO] [stdout] 29 | |     size: Option<usize>,
[INFO] [stdout] ...  |
[INFO] [stdout] 42 | |     Ok(format!("{top}\n{middle}\n{bottom}"))
[INFO] [stdout] 43 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Generates a formatted ASCII box containing a command.`
[INFO] [stdout]    = help: ends near `Generates a formatted ASCII box containing a command.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:128:1
[INFO] [stdout]     |
[INFO] [stdout] 128 | / pub fn get_config_diff<T: Serialize>(old: &T, new: &T) -> Vec<(String, String)> {
[INFO] [stdout] 129 | |     let old_val = serde_json::to_value(old).unwrap_or(Value::Null);
[INFO] [stdout] 130 | |     let new_val = serde_json::to_value(new).unwrap_or(Value::Null);
[INFO] [stdout] ...   |
[INFO] [stdout] 150 | |     rows
[INFO] [stdout] 151 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]     = help: ends near `Compares two serializable structures and returns a list of differences.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:128:1
[INFO] [stdout]     |
[INFO] [stdout] 128 | / pub fn get_config_diff<T: Serialize>(old: &T, new: &T) -> Vec<(String, String)> {
[INFO] [stdout] 129 | |     let old_val = serde_json::to_value(old).unwrap_or(Value::Null);
[INFO] [stdout] 130 | |     let new_val = serde_json::to_value(new).unwrap_or(Value::Null);
[INFO] [stdout] ...   |
[INFO] [stdout] 150 | |     rows
[INFO] [stdout] 151 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Compares two serializable structures and returns a list of differences.`
[INFO] [stdout]     = help: ends near `Compares two serializable structures and returns a list of differences.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:183:1
[INFO] [stdout]     |
[INFO] [stdout] 183 | / pub fn map_result<T>(result: Result<T, Box<dyn Error>>) -> Result<T, Box<dyn Error>> {
[INFO] [stdout] 184 | |     result.map_err(|e| {
[INFO] [stdout] 185 | |         if let Some(err) = e.downcast_ref::<RootfsNotFoundError>() {
[INFO] [stdout] 186 | |             return failed_exist_rootfs(&format!("{} setup", app_name()), &err.0.to_string_lossy())
[INFO] [stdout] ...   |
[INFO] [stdout] 190 | |     })
[INFO] [stdout] 191 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]     = help: ends near `Maps sandbox errors to visual terminal dialogs.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:183:1
[INFO] [stdout]     |
[INFO] [stdout] 183 | / pub fn map_result<T>(result: Result<T, Box<dyn Error>>) -> Result<T, Box<dyn Error>> {
[INFO] [stdout] 184 | |     result.map_err(|e| {
[INFO] [stdout] 185 | |         if let Some(err) = e.downcast_ref::<RootfsNotFoundError>() {
[INFO] [stdout] 186 | |             return failed_exist_rootfs(&format!("{} setup", app_name()), &err.0.to_string_lossy())
[INFO] [stdout] ...   |
[INFO] [stdout] 190 | |     })
[INFO] [stdout] 191 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Maps sandbox errors to visual terminal dialogs.`
[INFO] [stdout]     = help: ends near `Maps sandbox errors to visual terminal dialogs.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | / pub fn print_overlay_status(
[INFO] [stdout] 226 | |     use_overlay: bool,
[INFO] [stdout] 227 | |     action: OverlayAction,
[INFO] [stdout] 228 | |     inode_mode: InodeMode,
[INFO] [stdout] ...   |
[INFO] [stdout] 244 | |     Ok(())
[INFO] [stdout] 245 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]     = help: ends near `Prints the global overlay configuration status followed by the profiles table.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | / pub fn print_overlay_status(
[INFO] [stdout] 226 | |     use_overlay: bool,
[INFO] [stdout] 227 | |     action: OverlayAction,
[INFO] [stdout] 228 | |     inode_mode: InodeMode,
[INFO] [stdout] ...   |
[INFO] [stdout] 244 | |     Ok(())
[INFO] [stdout] 245 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Prints the global overlay configuration status followed by the profiles table.`
[INFO] [stdout]     = help: ends near `Prints the global overlay configuration status followed by the profiles table.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:201:1
[INFO] [stdout]     |
[INFO] [stdout] 201 | / pub fn print_profile_table(
[INFO] [stdout] 202 | |     rootfs: &Path,
[INFO] [stdout] 203 | |     profiles: Vec<(String, String)>,
[INFO] [stdout] 204 | | ) -> Result<(), Box<dyn Error>> {
[INFO] [stdout] ...   |
[INFO] [stdout] 212 | |     Ok(())
[INFO] [stdout] 213 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]     = help: ends near `Prints the table of available profiles to the console.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:201:1
[INFO] [stdout]     |
[INFO] [stdout] 201 | / pub fn print_profile_table(
[INFO] [stdout] 202 | |     rootfs: &Path,
[INFO] [stdout] 203 | |     profiles: Vec<(String, String)>,
[INFO] [stdout] 204 | | ) -> Result<(), Box<dyn Error>> {
[INFO] [stdout] ...   |
[INFO] [stdout] 212 | |     Ok(())
[INFO] [stdout] 213 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Prints the table of available profiles to the console.`
[INFO] [stdout]     = help: ends near `Prints the table of available profiles to the console.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:86:1
[INFO] [stdout]     |
[INFO] [stdout]  86 | / pub fn render_table(rows: Vec<(String, String)>) {
[INFO] [stdout]  87 | |     let key_width = rows.iter().map(|(k, _)| k.len()).max().unwrap_or(0);
[INFO] [stdout]  88 | |     let val_width = rows
[INFO] [stdout]  89 | |         .iter()
[INFO] [stdout] ...   |
[INFO] [stdout] 115 | |     println!("╚═{kw}═══╩═{vw}═══╝");
[INFO] [stdout] 116 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]     = help: ends near `Renders a visually aligned table in the terminal.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dialogs.rs:86:1
[INFO] [stdout]     |
[INFO] [stdout]  86 | / pub fn render_table(rows: Vec<(String, String)>) {
[INFO] [stdout]  87 | |     let key_width = rows.iter().map(|(k, _)| k.len()).max().unwrap_or(0);
[INFO] [stdout]  88 | |     let val_width = rows
[INFO] [stdout]  89 | |         .iter()
[INFO] [stdout] ...   |
[INFO] [stdout] 115 | |     println!("╚═{kw}═══╩═{vw}═══╝");
[INFO] [stdout] 116 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Renders a visually aligned table in the terminal.`
[INFO] [stdout]     = help: ends near `Renders a visually aligned table in the terminal.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dialogs.rs:69:1
[INFO] [stdout]    |
[INFO] [stdout] 69 | / pub fn success_finish_setup(run_command: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout] 70 | |     let cmd_box = get_cmd_box(&format!("$ {run_command}"), Some(2), None)?;
[INFO] [stdout] 71 | |
[INFO] [stdout] 72 | |     println!(
[INFO] [stdout] ...  |
[INFO] [stdout] 76 | |     Ok(())
[INFO] [stdout] 77 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting UI and formatting utilities for tables and dialogs.`
[INFO] [stdout]    = help: ends near `Prints a success message and instructions after a successful setup.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dialogs.rs:69:1
[INFO] [stdout]    |
[INFO] [stdout] 69 | / pub fn success_finish_setup(run_command: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout] 70 | |     let cmd_box = get_cmd_box(&format!("$ {run_command}"), Some(2), None)?;
[INFO] [stdout] 71 | |
[INFO] [stdout] 72 | |     println!(
[INFO] [stdout] ...  |
[INFO] [stdout] 76 | |     Ok(())
[INFO] [stdout] 77 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Prints a success message and instructions after a successful setup.`
[INFO] [stdout]    = help: ends near `Prints a success message and instructions after a successful setup.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/sandbox.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct SandBox;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting core sandbox execution logic.`
[INFO] [stdout]    = help: ends near `Core structure for sandbox operations.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/sandbox.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct SandBox;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Core structure for sandbox operations.`
[INFO] [stdout]    = help: ends near `Core structure for sandbox operations.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/options.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | / pub struct CommitFilterConfig {
[INFO] [stdout] 32 | |     /// Set of paths that must always be included in the commit, regardless of other rules.
[INFO] [stdout] 33 | |     pub force_files: HashSet<PathBuf>,
[INFO] [stdout] 34 | |     /// Set of directories to be completely ignored during the commit process.
[INFO] [stdout] ...  |
[INFO] [stdout] 52 | |     pub use_rootfs_preset: bool,
[INFO] [stdout] 53 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting options for sandbox utils.`
[INFO] [stdout]    = help: ends near `Configuration for filtering files during the OverlayFS commit process.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/options.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | / pub struct CommitFilterConfig {
[INFO] [stdout] 32 | |     /// Set of paths that must always be included in the commit, regardless of other rules.
[INFO] [stdout] 33 | |     pub force_files: HashSet<PathBuf>,
[INFO] [stdout] 34 | |     /// Set of directories to be completely ignored during the commit process.
[INFO] [stdout] ...  |
[INFO] [stdout] 52 | |     pub use_rootfs_preset: bool,
[INFO] [stdout] 53 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Configuration for filtering files during the OverlayFS commit process.`
[INFO] [stdout]    = help: ends near `Configuration for filtering files during the OverlayFS commit process.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/options.rs:57:1
[INFO] [stdout]    |
[INFO] [stdout] 57 | / pub struct OverlayConfig {
[INFO] [stdout] 58 | |     /// Enables the OverlayFS layering.
[INFO] [stdout] 59 | |     pub use_overlay: bool,
[INFO] [stdout] 60 | |     /// Defines the inode management strategy (Virtual or Persistent).
[INFO] [stdout] ...  |
[INFO] [stdout] 69 | |     pub overlay_as_home: bool,
[INFO] [stdout] 70 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting options for sandbox utils.`
[INFO] [stdout]    = help: ends near `Configuration for the OverlayFS FUSE layering system.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/options.rs:57:1
[INFO] [stdout]    |
[INFO] [stdout] 57 | / pub struct OverlayConfig {
[INFO] [stdout] 58 | |     /// Enables the OverlayFS layering.
[INFO] [stdout] 59 | |     pub use_overlay: bool,
[INFO] [stdout] 60 | |     /// Defines the inode management strategy (Virtual or Persistent).
[INFO] [stdout] ...  |
[INFO] [stdout] 69 | |     pub overlay_as_home: bool,
[INFO] [stdout] 70 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Configuration for the OverlayFS FUSE layering system.`
[INFO] [stdout]    = help: ends near `Configuration for the OverlayFS FUSE layering system.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/options.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct RootfsNotFoundError(pub PathBuf);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting options for sandbox utils.`
[INFO] [stdout]    = help: ends near `Custom error type for cases where the RootFS directory is missing.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/options.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct RootfsNotFoundError(pub PathBuf);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Custom error type for cases where the RootFS directory is missing.`
[INFO] [stdout]    = help: ends near `Custom error type for cases where the RootFS directory is missing.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/options.rs:74:1
[INFO] [stdout]     |
[INFO] [stdout]  74 | / pub struct SandBoxConfig {
[INFO] [stdout]  75 | |     /// Path to the RootFS directory.
[INFO] [stdout]  76 | |     pub rootfs: PathBuf,
[INFO] [stdout]  77 | |     /// The profile name used to resolve the specific RootFS subdirectory.
[INFO] [stdout] ...   |
[INFO] [stdout] 117 | |     pub commit_filter: CommitFilterConfig,
[INFO] [stdout] 118 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting options for sandbox utils.`
[INFO] [stdout]     = help: ends near `Configuration structure for defining how the sandbox should run.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/options.rs:74:1
[INFO] [stdout]     |
[INFO] [stdout]  74 | / pub struct SandBoxConfig {
[INFO] [stdout]  75 | |     /// Path to the RootFS directory.
[INFO] [stdout]  76 | |     pub rootfs: PathBuf,
[INFO] [stdout]  77 | |     /// The profile name used to resolve the specific RootFS subdirectory.
[INFO] [stdout] ...   |
[INFO] [stdout] 117 | |     pub commit_filter: CommitFilterConfig,
[INFO] [stdout] 118 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Configuration structure for defining how the sandbox should run.`
[INFO] [stdout]     = help: ends near `Configuration structure for defining how the sandbox should run.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/utils.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | / pub struct ArchiveConfig {
[INFO] [stdout] 25 | |     /// If true, the file permissions (mode) will be restored from the archive.
[INFO] [stdout] 26 | |     pub preserve_permissions: bool,
[INFO] [stdout] 27 | |     /// If true, extended attributes (xattrs) will be restored if supported by the system.
[INFO] [stdout] ...  |
[INFO] [stdout] 36 | |     pub overwrite: bool,
[INFO] [stdout] 37 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting utilities for file transfer and bootstrap extraction.`
[INFO] [stdout]    = help: ends near `Configuration for the archive unpacking behavior.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/utils.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | / pub struct ArchiveConfig {
[INFO] [stdout] 25 | |     /// If true, the file permissions (mode) will be restored from the archive.
[INFO] [stdout] 26 | |     pub preserve_permissions: bool,
[INFO] [stdout] 27 | |     /// If true, extended attributes (xattrs) will be restored if supported by the system.
[INFO] [stdout] ...  |
[INFO] [stdout] 36 | |     pub overwrite: bool,
[INFO] [stdout] 37 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Configuration for the archive unpacking behavior.`
[INFO] [stdout]    = help: ends near `Configuration for the archive unpacking behavior.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/utils.rs:68:1
[INFO] [stdout]    |
[INFO] [stdout] 68 | / pub fn download_file(url: &str, dest: PathBuf, filename: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout] 69 | |     let save_path = dest.join(filename);
[INFO] [stdout] 70 | |
[INFO] [stdout] 71 | |     if save_path.exists() {
[INFO] [stdout] ...  |
[INFO] [stdout] 95 | |     Ok(())
[INFO] [stdout] 96 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting utilities for file transfer and bootstrap extraction.`
[INFO] [stdout]    = help: ends near `Downloads a file from a URL to a local destination with a progress bar.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/utils.rs:68:1
[INFO] [stdout]    |
[INFO] [stdout] 68 | / pub fn download_file(url: &str, dest: PathBuf, filename: &str) -> Result<(), Box<dyn Error>> {
[INFO] [stdout] 69 | |     let save_path = dest.join(filename);
[INFO] [stdout] 70 | |
[INFO] [stdout] 71 | |     if save_path.exists() {
[INFO] [stdout] ...  |
[INFO] [stdout] 95 | |     Ok(())
[INFO] [stdout] 96 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Downloads a file from a URL to a local destination with a progress bar.`
[INFO] [stdout]    = help: ends near `Downloads a file from a URL to a local destination with a progress bar.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | / pub fn extract_bootstrap(
[INFO] [stdout] 110 | |     file_path: PathBuf,
[INFO] [stdout] 111 | |     destination: PathBuf,
[INFO] [stdout] 112 | |     config: ArchiveConfig,
[INFO] [stdout] ...   |
[INFO] [stdout] 148 | |     Ok(())
[INFO] [stdout] 149 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting utilities for file transfer and bootstrap extraction.`
[INFO] [stdout]     = help: ends near `Extracts a compressed bootstrap archive (tar) to a destination directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | / pub fn extract_bootstrap(
[INFO] [stdout] 110 | |     file_path: PathBuf,
[INFO] [stdout] 111 | |     destination: PathBuf,
[INFO] [stdout] 112 | |     config: ArchiveConfig,
[INFO] [stdout] ...   |
[INFO] [stdout] 148 | |     Ok(())
[INFO] [stdout] 149 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Extracts a compressed bootstrap archive (tar) to a destination directory.`
[INFO] [stdout]     = help: ends near `Extracts a compressed bootstrap archive (tar) to a destination directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:219:1
[INFO] [stdout]     |
[INFO] [stdout] 219 | / pub fn handle_removal(
[INFO] [stdout] 220 | |     remove: bool,
[INFO] [stdout] 221 | |     target_path: &Path,
[INFO] [stdout] 222 | |     upper_path: &Path,
[INFO] [stdout] ...   |
[INFO] [stdout] 258 | |     Ok(())
[INFO] [stdout] 259 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting utilities for file transfer and bootstrap extraction.`
[INFO] [stdout]     = help: ends near `Removes a profile directory and its corresponding upper directory if it exists.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:219:1
[INFO] [stdout]     |
[INFO] [stdout] 219 | / pub fn handle_removal(
[INFO] [stdout] 220 | |     remove: bool,
[INFO] [stdout] 221 | |     target_path: &Path,
[INFO] [stdout] 222 | |     upper_path: &Path,
[INFO] [stdout] ...   |
[INFO] [stdout] 258 | |     Ok(())
[INFO] [stdout] 259 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Removes a profile directory and its corresponding upper directory if it exists.`
[INFO] [stdout]     = help: ends near `Removes a profile directory and its corresponding upper directory if it exists.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:272:1
[INFO] [stdout]     |
[INFO] [stdout] 272 | / pub fn handle_rename(
[INFO] [stdout] 273 | |     rename: Option<String>,
[INFO] [stdout] 274 | |     rootfs: &Path,
[INFO] [stdout] 275 | |     target_path: &Path,
[INFO] [stdout] ...   |
[INFO] [stdout] 298 | |     Ok(())
[INFO] [stdout] 299 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting utilities for file transfer and bootstrap extraction.`
[INFO] [stdout]     = help: ends near `Renames a profile and its associated upper directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:272:1
[INFO] [stdout]     |
[INFO] [stdout] 272 | / pub fn handle_rename(
[INFO] [stdout] 273 | |     rename: Option<String>,
[INFO] [stdout] 274 | |     rootfs: &Path,
[INFO] [stdout] 275 | |     target_path: &Path,
[INFO] [stdout] ...   |
[INFO] [stdout] 298 | |     Ok(())
[INFO] [stdout] 299 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Renames a profile and its associated upper directory.`
[INFO] [stdout]     = help: ends near `Renames a profile and its associated upper directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:161:1
[INFO] [stdout]     |
[INFO] [stdout] 161 | / pub fn list_available_profiles(
[INFO] [stdout] 162 | |     rootfs: &Path,
[INFO] [stdout] 163 | |     current_default: Option<&str>,
[INFO] [stdout] 164 | |     include_upper: bool,
[INFO] [stdout] ...   |
[INFO] [stdout] 205 | |     profiles
[INFO] [stdout] 206 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting utilities for file transfer and bootstrap extraction.`
[INFO] [stdout]     = help: ends near `Lists available profiles by scanning the root filesystem directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/utils.rs:161:1
[INFO] [stdout]     |
[INFO] [stdout] 161 | / pub fn list_available_profiles(
[INFO] [stdout] 162 | |     rootfs: &Path,
[INFO] [stdout] 163 | |     current_default: Option<&str>,
[INFO] [stdout] 164 | |     include_upper: bool,
[INFO] [stdout] ...   |
[INFO] [stdout] 205 | |     profiles
[INFO] [stdout] 206 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Lists available profiles by scanning the root filesystem directory.`
[INFO] [stdout]     = help: ends near `Lists available profiles by scanning the root filesystem directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/init.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const USE_BWRAP: &str = "bwrap";
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]    = help: ends near `Constant identifier for the Bubblewrap tool.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/init.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const USE_BWRAP: &str = "bwrap";
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Constant identifier for the Bubblewrap tool.`
[INFO] [stdout]    = help: ends near `Constant identifier for the Bubblewrap tool.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/init.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const USE_PROOT: &str = "proot";
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]    = help: ends near `Constant identifier for the PRoot tool.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/init.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const USE_PROOT: &str = "proot";
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Constant identifier for the PRoot tool.`
[INFO] [stdout]    = help: ends near `Constant identifier for the PRoot tool.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:202:1
[INFO] [stdout]     |
[INFO] [stdout] 202 | / pub fn app_arch() -> String {
[INFO] [stdout] 203 | |     CONFIG
[INFO] [stdout] 204 | |         .get()
[INFO] [stdout] 205 | |         .map(|c| c.app_arch.clone())
[INFO] [stdout] 206 | |         .unwrap_or_else(|| env::var("ARCH").unwrap_or_else(|_| env::consts::ARCH.to_string()))
[INFO] [stdout] 207 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the detected architecture from global config.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:202:1
[INFO] [stdout]     |
[INFO] [stdout] 202 | / pub fn app_arch() -> String {
[INFO] [stdout] 203 | |     CONFIG
[INFO] [stdout] 204 | |         .get()
[INFO] [stdout] 205 | |         .map(|c| c.app_arch.clone())
[INFO] [stdout] 206 | |         .unwrap_or_else(|| env::var("ARCH").unwrap_or_else(|_| env::consts::ARCH.to_string()))
[INFO] [stdout] 207 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the detected architecture from global config.`
[INFO] [stdout]     = help: ends near `Returns the detected architecture from global config.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:197:1
[INFO] [stdout]     |
[INFO] [stdout] 197 | / pub fn app_name() -> String {
[INFO] [stdout] 198 | |     CONFIG.wait().app_name.clone()
[INFO] [stdout] 199 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the application name from global config.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:197:1
[INFO] [stdout]     |
[INFO] [stdout] 197 | / pub fn app_name() -> String {
[INFO] [stdout] 198 | |     CONFIG.wait().app_name.clone()
[INFO] [stdout] 199 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the application name from global config.`
[INFO] [stdout]     = help: ends near `Returns the application name from global config.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:215:1
[INFO] [stdout]     |
[INFO] [stdout] 215 | / pub fn config_dir() -> PathBuf {
[INFO] [stdout] 216 | |     CONFIG.wait().config_dir.clone()
[INFO] [stdout] 217 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the configuration directory path.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:215:1
[INFO] [stdout]     |
[INFO] [stdout] 215 | / pub fn config_dir() -> PathBuf {
[INFO] [stdout] 216 | |     CONFIG.wait().config_dir.clone()
[INFO] [stdout] 217 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the configuration directory path.`
[INFO] [stdout]     = help: ends near `Returns the configuration directory path.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | / pub fn config_file() -> PathBuf {
[INFO] [stdout] 221 | |     CONFIG.wait().config_file.clone()
[INFO] [stdout] 222 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the path to the configuration file.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:220:1
[INFO] [stdout]     |
[INFO] [stdout] 220 | / pub fn config_file() -> PathBuf {
[INFO] [stdout] 221 | |     CONFIG.wait().config_file.clone()
[INFO] [stdout] 222 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the path to the configuration file.`
[INFO] [stdout]     = help: ends near `Returns the path to the configuration file.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | / pub fn default_cache() -> PathBuf {
[INFO] [stdout] 226 | |     CONFIG.wait().default_cache.clone()
[INFO] [stdout] 227 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the default cache directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | / pub fn default_cache() -> PathBuf {
[INFO] [stdout] 226 | |     CONFIG.wait().default_cache.clone()
[INFO] [stdout] 227 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the default cache directory.`
[INFO] [stdout]     = help: ends near `Returns the default cache directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:230:1
[INFO] [stdout]     |
[INFO] [stdout] 230 | / pub fn default_rootfs() -> PathBuf {
[INFO] [stdout] 231 | |     CONFIG.wait().default_rootfs.clone()
[INFO] [stdout] 232 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the default rootfs directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:230:1
[INFO] [stdout]     |
[INFO] [stdout] 230 | / pub fn default_rootfs() -> PathBuf {
[INFO] [stdout] 231 | |     CONFIG.wait().default_rootfs.clone()
[INFO] [stdout] 232 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the default rootfs directory.`
[INFO] [stdout]     = help: ends near `Returns the default rootfs directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:250:1
[INFO] [stdout]     |
[INFO] [stdout] 250 | / pub fn get_profile_name() -> String {
[INFO] [stdout] 251 | |     CONFIG.wait().profile.clone()
[INFO] [stdout] 252 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the current profile name.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:250:1
[INFO] [stdout]     |
[INFO] [stdout] 250 | / pub fn get_profile_name() -> String {
[INFO] [stdout] 251 | |     CONFIG.wait().profile.clone()
[INFO] [stdout] 252 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the current profile name.`
[INFO] [stdout]     = help: ends near `Returns the current profile name.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:210:1
[INFO] [stdout]     |
[INFO] [stdout] 210 | / pub fn safe_home() -> PathBuf {
[INFO] [stdout] 211 | |     CONFIG.wait().safe_home.clone()
[INFO] [stdout] 212 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the safe home path from global config.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:210:1
[INFO] [stdout]     |
[INFO] [stdout] 210 | / pub fn safe_home() -> PathBuf {
[INFO] [stdout] 211 | |     CONFIG.wait().safe_home.clone()
[INFO] [stdout] 212 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the safe home path from global config.`
[INFO] [stdout]     = help: ends near `Returns the safe home path from global config.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:90:1
[INFO] [stdout]     |
[INFO] [stdout]  90 | / pub fn sandbox_init(name: &str, arch_env: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]  91 | |     let home = env::var_os("HOME")
[INFO] [stdout]  92 | |         .map(PathBuf::from)
[INFO] [stdout]  93 | |         .unwrap_or_else(|| PathBuf::from("."));
[INFO] [stdout] ...   |
[INFO] [stdout] 127 | |     Ok(())
[INFO] [stdout] 128 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Initializes the base directories and detects the system architecture.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:90:1
[INFO] [stdout]     |
[INFO] [stdout]  90 | / pub fn sandbox_init(name: &str, arch_env: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]  91 | |     let home = env::var_os("HOME")
[INFO] [stdout]  92 | |         .map(PathBuf::from)
[INFO] [stdout]  93 | |         .unwrap_or_else(|| PathBuf::from("."));
[INFO] [stdout] ...   |
[INFO] [stdout] 127 | |     Ok(())
[INFO] [stdout] 128 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Initializes the base directories and detects the system architecture.`
[INFO] [stdout]     = help: ends near `Initializes the base directories and detects the system architecture.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:240:1
[INFO] [stdout]     |
[INFO] [stdout] 240 | / pub fn sandbox_tool() -> String {
[INFO] [stdout] 241 | |     TOOL.wait().name.clone()
[INFO] [stdout] 242 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the name of the selected sandbox tool.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:240:1
[INFO] [stdout]     |
[INFO] [stdout] 240 | / pub fn sandbox_tool() -> String {
[INFO] [stdout] 241 | |     TOOL.wait().name.clone()
[INFO] [stdout] 242 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the name of the selected sandbox tool.`
[INFO] [stdout]     = help: ends near `Returns the name of the selected sandbox tool.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | / pub fn set_profile(name: &str) -> String {
[INFO] [stdout] 192 | |     let dir_name = format!("{}_rootfs_{}", name, app_arch());
[INFO] [stdout] 193 | |     dir_name
[INFO] [stdout] 194 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Sets the global profile by resolving it into the standard directory format.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | / pub fn set_profile(name: &str) -> String {
[INFO] [stdout] 192 | |     let dir_name = format!("{}_rootfs_{}", name, app_arch());
[INFO] [stdout] 193 | |     dir_name
[INFO] [stdout] 194 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Sets the global profile by resolving it into the standard directory format.`
[INFO] [stdout]     = help: ends near `Sets the global profile by resolving it into the standard directory format.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:138:1
[INFO] [stdout]     |
[INFO] [stdout] 138 | / pub fn set_sandbox_tool(sandbox_tool: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 139 | |     let arch = app_arch();
[INFO] [stdout] 140 | |     let path = env::var_os("PATH").unwrap_or_default();
[INFO] [stdout] 141 | |     let local_dir = safe_home().join(".local").join("bin");
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     Ok(())
[INFO] [stdout] 179 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Configures the sandbox tool, downloading it if not found in the system.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:138:1
[INFO] [stdout]     |
[INFO] [stdout] 138 | / pub fn set_sandbox_tool(sandbox_tool: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 139 | |     let arch = app_arch();
[INFO] [stdout] 140 | |     let path = env::var_os("PATH").unwrap_or_default();
[INFO] [stdout] 141 | |     let local_dir = safe_home().join(".local").join("bin");
[INFO] [stdout] ...   |
[INFO] [stdout] 178 | |     Ok(())
[INFO] [stdout] 179 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Configures the sandbox tool, downloading it if not found in the system.`
[INFO] [stdout]     = help: ends near `Configures the sandbox tool, downloading it if not found in the system.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:235:1
[INFO] [stdout]     |
[INFO] [stdout] 235 | / pub fn temp_cache() -> PathBuf {
[INFO] [stdout] 236 | |     CONFIG.wait().temp_cache.clone()
[INFO] [stdout] 237 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the temporary cache directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:235:1
[INFO] [stdout]     |
[INFO] [stdout] 235 | / pub fn temp_cache() -> PathBuf {
[INFO] [stdout] 236 | |     CONFIG.wait().temp_cache.clone()
[INFO] [stdout] 237 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the temporary cache directory.`
[INFO] [stdout]     = help: ends near `Returns the temporary cache directory.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:245:1
[INFO] [stdout]     |
[INFO] [stdout] 245 | / pub fn tool_target() -> PathBuf {
[INFO] [stdout] 246 | |     TOOL.wait().target.clone()
[INFO] [stdout] 247 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Re-exporting initialization functions and environment getters.`
[INFO] [stdout]     = help: ends near `Returns the absolute path to the sandbox tool binary.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/init.rs:245:1
[INFO] [stdout]     |
[INFO] [stdout] 245 | / pub fn tool_target() -> PathBuf {
[INFO] [stdout] 246 | |     TOOL.wait().target.clone()
[INFO] [stdout] 247 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Returns the absolute path to the sandbox tool binary.`
[INFO] [stdout]     = help: ends near `Returns the absolute path to the sandbox tool binary.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not document `sandbox_utils`
[INFO] running `Command { std: "docker" "inspect" "b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e", kill_on_drop: false }`
[INFO] [stdout] b7f16bd60deb933c7ca524c8d436c038b9598e67500a84569a8e563c2aaad99e
