[INFO] cloning repository https://github.com/v-stickykeys/how_to_rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/v-stickykeys/how_to_rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fv-stickykeys%2Fhow_to_rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fv-stickykeys%2Fhow_to_rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 756cf5b677aebd1f7ebed3da94c92e0d2f82d685 [INFO] checking v-stickykeys/how_to_rust against master#f8f6997469237299c1d60814c7b9828602a1f8e4 for pr-143808 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fv-stickykeys%2Fhow_to_rust" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/v-stickykeys/how_to_rust [INFO] finished tweaking git repo https://github.com/v-stickykeys/how_to_rust [INFO] tweaked toml for git repo https://github.com/v-stickykeys/how_to_rust written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/v-stickykeys/how_to_rust on toolchain f8f6997469237299c1d60814c7b9828602a1f8e4 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f8f6997469237299c1d60814c7b9828602a1f8e4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/v-stickykeys/how_to_rust 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" "+f8f6997469237299c1d60814c7b9828602a1f8e4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+f8f6997469237299c1d60814c7b9828602a1f8e4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 966cd9ac30c42fa780fba185e56408314fb71a4a29c0eb9030e20f3646f9362e [INFO] running `Command { std: "docker" "start" "-a" "966cd9ac30c42fa780fba185e56408314fb71a4a29c0eb9030e20f3646f9362e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "966cd9ac30c42fa780fba185e56408314fb71a4a29c0eb9030e20f3646f9362e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "966cd9ac30c42fa780fba185e56408314fb71a4a29c0eb9030e20f3646f9362e", kill_on_drop: false }` [INFO] [stdout] 966cd9ac30c42fa780fba185e56408314fb71a4a29c0eb9030e20f3646f9362e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+f8f6997469237299c1d60814c7b9828602a1f8e4" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6d248152bf37cef7bd54ac32bc3ad008e51a225d5558130bd2a2917e653280ef [INFO] running `Command { std: "docker" "start" "-a" "6d248152bf37cef7bd54ac32bc3ad008e51a225d5558130bd2a2917e653280ef", kill_on_drop: false }` [INFO] [stderr] Checking how_to_rust v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: struct `List` is never constructed [INFO] [stdout] --> src/linked_lists/first.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct List { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Node` is never constructed [INFO] [stdout] --> src/linked_lists/first.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | struct Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Link` is never used [INFO] [stdout] --> src/linked_lists/first.rs:14:6 [INFO] [stdout] | [INFO] [stdout] 14 | enum Link { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `push`, `pop`, and `pop_node` are never used [INFO] [stdout] --> src/linked_lists/first.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 67 | impl List { [INFO] [stdout] | --------- associated items in this implementation [INFO] [stdout] 68 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 78 | pub fn push(&mut self, elem: i32) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn pop(&mut self) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 94 | fn pop_node(&mut self) -> Link { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `List` is never constructed [INFO] [stdout] --> src/linked_lists/third.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct List { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Link` is never used [INFO] [stdout] --> src/linked_lists/third.rs:7:6 [INFO] [stdout] | [INFO] [stdout] 7 | type Link = Option>>; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Node` is never constructed [INFO] [stdout] --> src/linked_lists/third.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Iter` is never constructed [INFO] [stdout] --> src/linked_lists/third.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Iter<'a, G> { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `head`, `prepend`, `behead`, and `iter` are never used [INFO] [stdout] --> src/linked_lists/third.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl List { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 19 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn head(&self) -> Option<&G> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn prepend(&self, elem: G) -> List { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn behead(&self) -> List { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn iter(&self) -> Iter { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ThreadSafeList` is never constructed [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:3:12 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct ThreadSafeList { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `ThreadSafeLink` is never used [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:7:6 [INFO] [stdout] | [INFO] [stdout] 7 | type ThreadSafeLink = Option>>; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ThreadSafeNode` is never constructed [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | struct ThreadSafeNode { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ThreadSafeIter` is never constructed [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct ThreadSafeIter<'a, G> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `head`, `prepend`, `behead`, and `iter` are never used [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl ThreadSafeList { [INFO] [stdout] | ------------------------- associated items in this implementation [INFO] [stdout] 19 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn head(&self) -> Option<&G> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 27 | pub fn prepend(&self, elem: G) -> ThreadSafeList { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | pub fn behead(&self) -> ThreadSafeList { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn iter(&self) -> ThreadSafeIter { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `List` is never constructed [INFO] [stdout] --> src/linked_lists/fourth.rs:7:12 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct List { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Link` is never used [INFO] [stdout] --> src/linked_lists/fourth.rs:12:6 [INFO] [stdout] | [INFO] [stdout] 12 | type Link = Option>>>; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Node` is never constructed [INFO] [stdout] --> src/linked_lists/fourth.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | struct Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IntoIter` is never constructed [INFO] [stdout] --> src/linked_lists/fourth.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct IntoIter(List); [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/linked_lists/fourth.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 22 | impl Node { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 23 | fn new(elem: T) -> Rc> { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/linked_lists/fourth.rs:33:8 [INFO] [stdout] | [INFO] [stdout] 32 | impl List { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 33 | fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn peek_front(&self) -> Option> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn peek_front_mut(&mut self) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn peek_back(&self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | pub fn peek_back_mut(&mut self) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | pub fn push_front(&mut self, elem: T) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn push_back(&mut self, elem: T) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn pop_front(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn pop_back(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | pub fn into_iter(self) -> IntoIter { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `List` is never constructed [INFO] [stdout] --> src/linked_lists/fifth.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct List { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Link` is never used [INFO] [stdout] --> src/linked_lists/fifth.rs:10:6 [INFO] [stdout] | [INFO] [stdout] 10 | type Link = Option>>; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Node` is never constructed [INFO] [stdout] --> src/linked_lists/fifth.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | struct Node { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `push`, and `pop` are never used [INFO] [stdout] --> src/linked_lists/fifth.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl<'a, T> List { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 18 | pub fn new() -> List { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn push(&mut self, elem: T) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | pub fn pop(&mut self) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/linked_lists/fifth.rs:66:12 [INFO] [stdout] | [INFO] [stdout] 65 | impl Node { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 66 | pub fn new(elem: T) -> Node { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wrong_order` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn wrong_order() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `right_order` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:21:8 [INFO] [stdout] | [INFO] [stdout] 21 | pub fn right_order() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pointer_offset` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn pointer_offset() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pointer_offset_copy` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:56:8 [INFO] [stdout] | [INFO] [stdout] 56 | pub fn pointer_offset_copy() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mess` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:72:8 [INFO] [stdout] | [INFO] [stdout] 72 | pub fn mess() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `multi_allocation` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:95:8 [INFO] [stdout] | [INFO] [stdout] 95 | pub fn multi_allocation() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `slice_as_pointer` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:116:8 [INFO] [stdout] | [INFO] [stdout] 116 | pub fn slice_as_pointer() -> [i32; 5] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/second.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn iter(&self) -> Iter { [INFO] [stdout] | ^^^^^ ------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 65 | pub fn iter(&self) -> Iter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/second.rs:69:21 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn iter_mut(&mut self) -> IterMut { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 69 | pub fn iter_mut(&mut self) -> IterMut<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/third.rs:40:17 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn iter(&self) -> Iter { [INFO] [stdout] | ^^^^^ ------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 40 | pub fn iter(&self) -> Iter<'_, G> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:40:17 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn iter(&self) -> ThreadSafeIter { [INFO] [stdout] | ^^^^^ ----------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 40 | pub fn iter(&self) -> ThreadSafeIter<'_, G> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/fourth.rs:40:23 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn peek_front(&self) -> Option> { [INFO] [stdout] | ^^^^^ ------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 40 | pub fn peek_front(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/fourth.rs:44:27 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn peek_front_mut(&mut self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ --------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 44 | pub fn peek_front_mut(&mut self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/fourth.rs:48:22 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn peek_back(&self) -> Option> { [INFO] [stdout] | ^^^^^ ------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 48 | pub fn peek_back(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/fourth.rs:52:26 [INFO] [stdout] | [INFO] [stdout] 52 | pub fn peek_back_mut(&mut self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ --------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 52 | pub fn peek_back_mut(&mut self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Add` [INFO] [stdout] --> src/examples/oop.rs:2:30 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ops::{Index, Range, Add}; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `arguments` [INFO] [stdout] --> src/examples/oop.rs:33:22 [INFO] [stdout] | [INFO] [stdout] 33 | action: |arguments: OptionalProgramArguments, options: OptionalProgramOptions| { println!("Command not implemented"); } [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_arguments` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `options` [INFO] [stdout] --> src/examples/oop.rs:33:59 [INFO] [stdout] | [INFO] [stdout] 33 | action: |arguments: OptionalProgramArguments, options: OptionalProgramOptions| { println!("Command not implemented"); } [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/examples/oop.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | let mut child_link = Rc::new(RefCell::new(child.clone())); [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: value assigned to `first_command` is never read [INFO] [stdout] --> src/examples/oop.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | let mut first_command = ""; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `program` [INFO] [stdout] --> src/examples/oop.rs:68:22 [INFO] [stdout] | [INFO] [stdout] 68 | Some(program) => println!("todo"), // TODO: invoke the action eventually [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Logger` is never used [INFO] [stdout] --> src/examples/logger.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | pub trait Logger { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BasicLogger` is never constructed [INFO] [stdout] --> src/examples/logger.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct BasicLogger; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HELP` is never used [INFO] [stdout] --> src/examples/multi_line_string.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | pub const HELP: &str = "\ [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Program` is never constructed [INFO] [stdout] --> src/examples/oop.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 8 | struct Program { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Link` is never used [INFO] [stdout] --> src/examples/oop.rs:19:6 [INFO] [stdout] | [INFO] [stdout] 19 | type Link = Rc>; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `OptionalProgramArguments` is never used [INFO] [stdout] --> src/examples/oop.rs:20:6 [INFO] [stdout] | [INFO] [stdout] 20 | type OptionalProgramArguments = Option>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `OptionalProgramOptions` is never used [INFO] [stdout] --> src/examples/oop.rs:21:6 [INFO] [stdout] | [INFO] [stdout] 21 | type OptionalProgramOptions = Option>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `action`, `command`, `description`, and `parse` are never used [INFO] [stdout] --> src/examples/oop.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 23 | impl Program { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 24 | fn new(name: String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | fn action(mut self, func: fn(OptionalProgramArguments, OptionalProgramOptions)) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | fn command(mut self, name: String) -> (Program, Program) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | fn description(mut self, description: String) -> Program { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | fn parse(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Add` [INFO] [stdout] --> src/examples/oop.rs:2:30 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ops::{Index, Range, Add}; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_root` is never used [INFO] [stdout] --> src/examples/oop.rs:77:4 [INFO] [stdout] | [INFO] [stdout] 77 | fn is_root(program: &Program) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_child` is never used [INFO] [stdout] --> src/examples/oop.rs:81:4 [INFO] [stdout] | [INFO] [stdout] 81 | fn get_child(program: &Program, name: String) -> Option<&Link> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProgramArgument` is never constructed [INFO] [stdout] --> src/examples/oop.rs:90:8 [INFO] [stdout] | [INFO] [stdout] 90 | struct ProgramArgument { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProgramOption` is never constructed [INFO] [stdout] --> src/examples/oop.rs:97:8 [INFO] [stdout] | [INFO] [stdout] 97 | struct ProgramOption { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_required` and `print` are never used [INFO] [stdout] --> src/examples/oop.rs:105:8 [INFO] [stdout] | [INFO] [stdout] 104 | impl ProgramArgument { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] 105 | fn is_required(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | fn print(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `arguments` [INFO] [stdout] --> src/examples/oop.rs:33:22 [INFO] [stdout] | [INFO] [stdout] 33 | action: |arguments: OptionalProgramArguments, options: OptionalProgramOptions| { println!("Command not implemented"); } [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_arguments` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `options` [INFO] [stdout] --> src/examples/oop.rs:33:59 [INFO] [stdout] | [INFO] [stdout] 33 | action: |arguments: OptionalProgramArguments, options: OptionalProgramOptions| { println!("Command not implemented"); } [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_options` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/examples/oop.rs:43:13 [INFO] [stdout] | [INFO] [stdout] 43 | let mut child_link = Rc::new(RefCell::new(child.clone())); [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: value assigned to `first_command` is never read [INFO] [stdout] --> src/examples/oop.rs:57:17 [INFO] [stdout] | [INFO] [stdout] 57 | let mut first_command = ""; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `program` [INFO] [stdout] --> src/examples/oop.rs:68:22 [INFO] [stdout] | [INFO] [stdout] 68 | Some(program) => println!("todo"), // TODO: invoke the action eventually [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Iter` is never constructed [INFO] [stdout] --> src/linked_lists/third.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Iter<'a, G> { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `iter` is never used [INFO] [stdout] --> src/linked_lists/third.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl List { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn iter(&self) -> Iter { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `iter` is never used [INFO] [stdout] --> src/linked_lists/third.rs:98:8 [INFO] [stdout] | [INFO] [stdout] 98 | fn iter() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ThreadSafeIter` is never constructed [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:14:12 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct ThreadSafeIter<'a, G> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `iter` is never used [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl ThreadSafeList { [INFO] [stdout] | ------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn iter(&self) -> ThreadSafeIter { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `iter` is never used [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:98:8 [INFO] [stdout] | [INFO] [stdout] 98 | fn iter() { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `wrong_order` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn wrong_order() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `pointer_offset` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn pointer_offset() { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `slice_as_pointer` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:116:8 [INFO] [stdout] | [INFO] [stdout] 116 | pub fn slice_as_pointer() -> [i32; 5] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `test_slice_as_pointer` is never used [INFO] [stdout] --> src/linked_lists/chaos.rs:181:8 [INFO] [stdout] | [INFO] [stdout] 181 | fn test_slice_as_pointer() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/second.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 65 | pub fn iter(&self) -> Iter { [INFO] [stdout] | ^^^^^ ------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 65 | pub fn iter(&self) -> Iter<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/second.rs:69:21 [INFO] [stdout] | [INFO] [stdout] 69 | pub fn iter_mut(&mut self) -> IterMut { [INFO] [stdout] | ^^^^^^^^^ ---------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 69 | pub fn iter_mut(&mut self) -> IterMut<'_, T> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/third.rs:40:17 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn iter(&self) -> Iter { [INFO] [stdout] | ^^^^^ ------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 40 | pub fn iter(&self) -> Iter<'_, G> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/third_thread_safe.rs:40:17 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn iter(&self) -> ThreadSafeIter { [INFO] [stdout] | ^^^^^ ----------------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 40 | pub fn iter(&self) -> ThreadSafeIter<'_, G> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/fourth.rs:40:23 [INFO] [stdout] | [INFO] [stdout] 40 | pub fn peek_front(&self) -> Option> { [INFO] [stdout] | ^^^^^ ------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 40 | pub fn peek_front(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/fourth.rs:44:27 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn peek_front_mut(&mut self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ --------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 44 | pub fn peek_front_mut(&mut self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/fourth.rs:48:22 [INFO] [stdout] | [INFO] [stdout] 48 | pub fn peek_back(&self) -> Option> { [INFO] [stdout] | ^^^^^ ------ the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 48 | pub fn peek_back(&self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing [INFO] [stdout] --> src/linked_lists/fourth.rs:52:26 [INFO] [stdout] | [INFO] [stdout] 52 | pub fn peek_back_mut(&mut self) -> Option> { [INFO] [stdout] | ^^^^^^^^^ --------- the lifetime gets resolved as `'_` [INFO] [stdout] | | [INFO] [stdout] | this lifetime flows to the output [INFO] [stdout] | [INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths [INFO] [stdout] | [INFO] [stdout] 52 | pub fn peek_back_mut(&mut self) -> Option> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/examples/oop.rs:127:13 [INFO] [stdout] | [INFO] [stdout] 127 | let mut program = Program::new(String::from("root")); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `child` [INFO] [stdout] --> src/examples/oop.rs:154:22 [INFO] [stdout] | [INFO] [stdout] 154 | let (parent, child) = parent.command(String::from("command")); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_child` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cmd` [INFO] [stdout] --> src/examples/oop.rs:162:18 [INFO] [stdout] | [INFO] [stdout] 162 | Some(cmd) => panic!("Found command that should be invalid"), [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_cmd` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/examples/oop.rs:153:13 [INFO] [stdout] | [INFO] [stdout] 153 | let mut parent = Program::new(String::from("root")); [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `command` [INFO] [stdout] --> src/examples/oop.rs:170:23 [INFO] [stdout] | [INFO] [stdout] 170 | let (program, command) = program.command(String::from("command")); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/examples/oop.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | let mut program = Program::new(String::from("root")); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BasicLogger` is never constructed [INFO] [stdout] --> src/examples/logger.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct BasicLogger; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `version`, `arguments`, and `options` are never read [INFO] [stdout] --> src/examples/oop.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 8 | struct Program { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] 9 | name: String, [INFO] [stdout] 10 | version: Option, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | arguments: OptionalProgramArguments, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 15 | options: OptionalProgramOptions, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Program` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `description` and `default` are never read [INFO] [stdout] --> src/examples/oop.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 90 | struct ProgramArgument { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 91 | name: String, [INFO] [stdout] 92 | description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 93 | default: String [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProgramArgument` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `flags`, `description`, `default`, and `argument` are never read [INFO] [stdout] --> src/examples/oop.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 97 | struct ProgramOption { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 98 | flags: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 99 | description: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 100 | default: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 101 | argument: ProgramArgument [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProgramOption` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `print` is never used [INFO] [stdout] --> src/examples/oop.rs:111:8 [INFO] [stdout] | [INFO] [stdout] 104 | impl ProgramArgument { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 111 | fn print(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.63s [INFO] running `Command { std: "docker" "inspect" "6d248152bf37cef7bd54ac32bc3ad008e51a225d5558130bd2a2917e653280ef", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6d248152bf37cef7bd54ac32bc3ad008e51a225d5558130bd2a2917e653280ef", kill_on_drop: false }` [INFO] [stdout] 6d248152bf37cef7bd54ac32bc3ad008e51a225d5558130bd2a2917e653280ef