[INFO] cloning repository https://github.com/alexjperkins/rustgorithms [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/alexjperkins/rustgorithms" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexjperkins%2Frustgorithms", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexjperkins%2Frustgorithms'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c4f77f6971074d9d59d1c1fdaa46244ccc1506a0 [INFO] checking alexjperkins/rustgorithms against master#506512391b1a75ae450d36c9420978402a91abcc for pr-125384 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexjperkins%2Frustgorithms" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/alexjperkins/rustgorithms on toolchain 506512391b1a75ae450d36c9420978402a91abcc [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/alexjperkins/rustgorithms [INFO] finished tweaking git repo https://github.com/alexjperkins/rustgorithms [INFO] tweaked toml for git repo https://github.com/alexjperkins/rustgorithms written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/alexjperkins/rustgorithms 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" "+506512391b1a75ae450d36c9420978402a91abcc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:beeedbb442662e57d416641ecc3200b38e573c25b057896194468d05594dd835" "/opt/rustwide/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ab4ccea17e484b7ed98a384e39e1c7a697150a276441a61c6af65e0a4117dc97 [INFO] running `Command { std: "docker" "start" "-a" "ab4ccea17e484b7ed98a384e39e1c7a697150a276441a61c6af65e0a4117dc97", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ab4ccea17e484b7ed98a384e39e1c7a697150a276441a61c6af65e0a4117dc97", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ab4ccea17e484b7ed98a384e39e1c7a697150a276441a61c6af65e0a4117dc97", kill_on_drop: false }` [INFO] [stdout] ab4ccea17e484b7ed98a384e39e1c7a697150a276441a61c6af65e0a4117dc97 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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=allow" "-e" "RUSTDOCFLAGS=--cap-lints=allow" "-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:beeedbb442662e57d416641ecc3200b38e573c25b057896194468d05594dd835" "/opt/rustwide/cargo-home/bin/cargo" "+506512391b1a75ae450d36c9420978402a91abcc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] a239fc21516caa277318290b397a9d40f84f83c940759e8cffb98e47413106fa [INFO] running `Command { std: "docker" "start" "-a" "a239fc21516caa277318290b397a9d40f84f83c940759e8cffb98e47413106fa", kill_on_drop: false }` [INFO] [stderr] Checking rustgorithms v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/binary_tree_diameter.rs:13:22 [INFO] [stdout] | [INFO] [stdout] 13 | fn new() -> &TreeInfo { [INFO] [stdout] | ^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from [INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static` [INFO] [stdout] | [INFO] [stdout] 13 | fn new() -> &'static TreeInfo { [INFO] [stdout] | +++++++ [INFO] [stdout] help: instead, you are more likely to want to return an owned value [INFO] [stdout] | [INFO] [stdout] 13 - fn new() -> &TreeInfo { [INFO] [stdout] 13 + fn new() -> TreeInfo { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/binary_tree_diameter.rs:13:22 [INFO] [stdout] | [INFO] [stdout] 13 | fn new() -> &TreeInfo { [INFO] [stdout] | ^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from [INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static` [INFO] [stdout] | [INFO] [stdout] 13 | fn new() -> &'static TreeInfo { [INFO] [stdout] | +++++++ [INFO] [stdout] help: instead, you are more likely to want to return an owned value [INFO] [stdout] | [INFO] [stdout] 13 - fn new() -> &TreeInfo { [INFO] [stdout] 13 + fn new() -> TreeInfo { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/binary_tree_diameter.rs:19:36 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: i32) -> &BinaryTree<> { [INFO] [stdout] | ^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from [INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static` [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: i32) -> &'static BinaryTree<> { [INFO] [stdout] | +++++++ [INFO] [stdout] help: instead, you are more likely to want to change the argument to be borrowed... [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: &i32) -> &BinaryTree<> { [INFO] [stdout] | + [INFO] [stdout] help: ...or alternatively, you might want to return an owned value [INFO] [stdout] | [INFO] [stdout] 19 - pub fn new(value: i32) -> &BinaryTree<> { [INFO] [stdout] 19 + pub fn new(value: i32) -> BinaryTree<> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/binary_tree_diameter.rs:19:36 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: i32) -> &BinaryTree<> { [INFO] [stdout] | ^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from [INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static` [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: i32) -> &'static BinaryTree<> { [INFO] [stdout] | +++++++ [INFO] [stdout] help: instead, you are more likely to want to change the argument to be borrowed... [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: &i32) -> &BinaryTree<> { [INFO] [stdout] | + [INFO] [stdout] help: ...or alternatively, you might want to return an owned value [INFO] [stdout] | [INFO] [stdout] 19 - pub fn new(value: i32) -> &BinaryTree<> { [INFO] [stdout] 19 + pub fn new(value: i32) -> BinaryTree<> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/binary_tree_diameter.rs:28:52 [INFO] [stdout] | [INFO] [stdout] 28 | fn get_tree_info(tree: Option>) -> &TreeInfo { [INFO] [stdout] | ^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from [INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static` [INFO] [stdout] | [INFO] [stdout] 28 | fn get_tree_info(tree: Option>) -> &'static TreeInfo { [INFO] [stdout] | +++++++ [INFO] [stdout] help: instead, you are more likely to want to change the argument to be borrowed... [INFO] [stdout] | [INFO] [stdout] 28 | fn get_tree_info(tree: &Option>) -> &TreeInfo { [INFO] [stdout] | + [INFO] [stdout] help: ...or alternatively, you might want to return an owned value [INFO] [stdout] | [INFO] [stdout] 28 - fn get_tree_info(tree: Option>) -> &TreeInfo { [INFO] [stdout] 28 + fn get_tree_info(tree: Option>) -> TreeInfo { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0106]: missing lifetime specifier [INFO] [stdout] --> src/binary_tree_diameter.rs:28:52 [INFO] [stdout] | [INFO] [stdout] 28 | fn get_tree_info(tree: Option>) -> &TreeInfo { [INFO] [stdout] | ^ expected named lifetime parameter [INFO] [stdout] | [INFO] [stdout] = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from [INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static` [INFO] [stdout] | [INFO] [stdout] 28 | fn get_tree_info(tree: Option>) -> &'static TreeInfo { [INFO] [stdout] | +++++++ [INFO] [stdout] help: instead, you are more likely to want to change the argument to be borrowed... [INFO] [stdout] | [INFO] [stdout] 28 | fn get_tree_info(tree: &Option>) -> &TreeInfo { [INFO] [stdout] | + [INFO] [stdout] help: ...or alternatively, you might want to return an owned value [INFO] [stdout] | [INFO] [stdout] 28 - fn get_tree_info(tree: Option>) -> &TreeInfo { [INFO] [stdout] 28 + fn get_tree_info(tree: Option>) -> TreeInfo { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0532]: expected tuple struct or tuple variant, found unit variant `None` [INFO] [stdout] --> src/binary_tree_diameter.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | None() => TreeInfo::new(), [INFO] [stdout] | ^^^^^^ help: use this syntax instead: `None` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:575:5 [INFO] [stdout] | [INFO] [stdout] = note: `None` defined here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0532]: expected tuple struct or tuple variant, found unit variant `None` [INFO] [stdout] --> src/binary_tree_diameter.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | None() => TreeInfo::new(), [INFO] [stdout] | ^^^^^^ help: use this syntax instead: `None` [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:575:5 [INFO] [stdout] | [INFO] [stdout] = note: `None` defined here [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0072]: recursive type `BinaryTree` has infinite size [INFO] [stdout] --> src/binary_tree_diameter.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | struct BinaryTree { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 2 | value: i32, [INFO] [stdout] 3 | left: Option>, [INFO] [stdout] | --------------- recursive without indirection [INFO] [stdout] | [INFO] [stdout] help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle [INFO] [stdout] | [INFO] [stdout] 3 | left: Option>>, [INFO] [stdout] | ++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0107]: struct takes 1 generic argument but 0 generic arguments were supplied [INFO] [stdout] --> src/binary_tree_diameter.rs:19:37 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: i32) -> &BinaryTree<> { [INFO] [stdout] | ^^^^^^^^^^ expected 1 generic argument [INFO] [stdout] | [INFO] [stdout] note: struct defined here, with 1 generic parameter: `i32` [INFO] [stdout] --> src/binary_tree_diameter.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | struct BinaryTree { [INFO] [stdout] | ^^^^^^^^^^ --- [INFO] [stdout] help: add missing generic argument [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: i32) -> &BinaryTree { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0072]: recursive type `BinaryTree` has infinite size [INFO] [stdout] --> src/binary_tree_diameter.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | struct BinaryTree { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 2 | value: i32, [INFO] [stdout] 3 | left: Option>, [INFO] [stdout] | --------------- recursive without indirection [INFO] [stdout] | [INFO] [stdout] help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle [INFO] [stdout] | [INFO] [stdout] 3 | left: Option>>, [INFO] [stdout] | ++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0107]: struct takes 1 generic argument but 0 generic arguments were supplied [INFO] [stdout] --> src/binary_tree_diameter.rs:19:37 [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: i32) -> &BinaryTree<> { [INFO] [stdout] | ^^^^^^^^^^ expected 1 generic argument [INFO] [stdout] | [INFO] [stdout] note: struct defined here, with 1 generic parameter: `i32` [INFO] [stdout] --> src/binary_tree_diameter.rs:1:8 [INFO] [stdout] | [INFO] [stdout] 1 | struct BinaryTree { [INFO] [stdout] | ^^^^^^^^^^ --- [INFO] [stdout] help: add missing generic argument [INFO] [stdout] | [INFO] [stdout] 19 | pub fn new(value: i32) -> &BinaryTree { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0072]: recursive type `BinaryTreeParent` has infinite size [INFO] [stdout] --> src/next_successor.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | struct BinaryTreeParent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 2 | value: i32, [INFO] [stdout] 3 | left: Option, [INFO] [stdout] | ---------------- recursive without indirection [INFO] [stdout] | [INFO] [stdout] help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle [INFO] [stdout] | [INFO] [stdout] 3 | left: Option>, [INFO] [stdout] | ++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0072]: recursive type `BinaryTreeParent` has infinite size [INFO] [stdout] --> src/next_successor.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | struct BinaryTreeParent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 2 | value: i32, [INFO] [stdout] 3 | left: Option, [INFO] [stdout] | ---------------- recursive without indirection [INFO] [stdout] | [INFO] [stdout] help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle [INFO] [stdout] | [INFO] [stdout] 3 | left: Option>, [INFO] [stdout] | ++++ + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/binary_tree_diameter.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 13 | fn new() -> &TreeInfo { [INFO] [stdout] | -------------- expected `&'static TreeInfo` because of return type [INFO] [stdout] 14 | TreeInfo{height: 0, diameter:0} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&TreeInfo`, found `TreeInfo<{integer}>` [INFO] [stdout] | [INFO] [stdout] = note: expected reference `&'static TreeInfo` [INFO] [stdout] found struct `TreeInfo<{integer}>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/binary_tree_diameter.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 13 | fn new() -> &TreeInfo { [INFO] [stdout] | -------------- expected `&'static TreeInfo` because of return type [INFO] [stdout] 14 | TreeInfo{height: 0, diameter:0} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&TreeInfo`, found `TreeInfo<{integer}>` [INFO] [stdout] | [INFO] [stdout] = note: expected reference `&'static TreeInfo` [INFO] [stdout] found struct `TreeInfo<{integer}>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0023]: this pattern has 0 fields, but the corresponding tuple variant has 1 field [INFO] [stdout] --> src/binary_tree_diameter.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | Some() => { [INFO] [stdout] | ^^^^^^ expected 1 field, found 0 [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:579:56 [INFO] [stdout] | [INFO] [stdout] = note: tuple variant has 1 field [INFO] [stdout] | [INFO] [stdout] help: use `_` to explicitly ignore each field [INFO] [stdout] | [INFO] [stdout] 31 | Some(_) => { [INFO] [stdout] | + [INFO] [stdout] help: use `..` to ignore all fields [INFO] [stdout] | [INFO] [stdout] 31 | Some(..) => { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0023]: this pattern has 0 fields, but the corresponding tuple variant has 1 field [INFO] [stdout] --> src/binary_tree_diameter.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | Some() => { [INFO] [stdout] | ^^^^^^ expected 1 field, found 0 [INFO] [stdout] --> /rustc/506512391b1a75ae450d36c9420978402a91abcc/library/core/src/option.rs:579:56 [INFO] [stdout] | [INFO] [stdout] = note: tuple variant has 1 field [INFO] [stdout] | [INFO] [stdout] help: use `_` to explicitly ignore each field [INFO] [stdout] | [INFO] [stdout] 31 | Some(_) => { [INFO] [stdout] | + [INFO] [stdout] help: use `..` to ignore all fields [INFO] [stdout] | [INFO] [stdout] 31 | Some(..) => { [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `left` on type `Option>` [INFO] [stdout] --> src/binary_tree_diameter.rs:32:42 [INFO] [stdout] | [INFO] [stdout] 32 | let lhs = get_tree_info(tree.left); [INFO] [stdout] | ^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 32 | let lhs = get_tree_info(tree.unwrap().left); [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `right` on type `Option>` [INFO] [stdout] --> src/binary_tree_diameter.rs:33:42 [INFO] [stdout] | [INFO] [stdout] 33 | let rhs = get_tree_info(tree.right); [INFO] [stdout] | ^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 33 | let rhs = get_tree_info(tree.unwrap().right); [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `left` on type `Option>` [INFO] [stdout] --> src/binary_tree_diameter.rs:32:42 [INFO] [stdout] | [INFO] [stdout] 32 | let lhs = get_tree_info(tree.left); [INFO] [stdout] | ^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 32 | let lhs = get_tree_info(tree.unwrap().left); [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `right` on type `Option>` [INFO] [stdout] --> src/binary_tree_diameter.rs:33:42 [INFO] [stdout] | [INFO] [stdout] 33 | let rhs = get_tree_info(tree.right); [INFO] [stdout] | ^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 33 | let rhs = get_tree_info(tree.unwrap().right); [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `right` on type `Option` [INFO] [stdout] --> src/next_successor.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | match node.right { [INFO] [stdout] | ^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 9 | match node.unwrap().right { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `right` on type `Option` [INFO] [stdout] --> src/next_successor.rs:10:46 [INFO] [stdout] | [INFO] [stdout] 10 | Some(_) => find_left_most_child(node.right), [INFO] [stdout] | ^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 10 | Some(_) => find_left_most_child(node.unwrap().right), [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `right` on type `Option` [INFO] [stdout] --> src/next_successor.rs:9:16 [INFO] [stdout] | [INFO] [stdout] 9 | match node.right { [INFO] [stdout] | ^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 9 | match node.unwrap().right { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `right` on type `Option` [INFO] [stdout] --> src/next_successor.rs:10:46 [INFO] [stdout] | [INFO] [stdout] 10 | Some(_) => find_left_most_child(node.right), [INFO] [stdout] | ^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 10 | Some(_) => find_left_most_child(node.unwrap().right), [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `left` on type `Option` [INFO] [stdout] --> src/next_successor.rs:16:16 [INFO] [stdout] | [INFO] [stdout] 16 | match node.left { [INFO] [stdout] | ^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 16 | match node.unwrap().left { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `left` on type `Option` [INFO] [stdout] --> src/next_successor.rs:16:16 [INFO] [stdout] | [INFO] [stdout] 16 | match node.left { [INFO] [stdout] | ^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 16 | match node.unwrap().left { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `left` on type `Option` [INFO] [stdout] --> src/next_successor.rs:17:47 [INFO] [stdout] | [INFO] [stdout] 17 | Some(_) => find_left_most_child(node.left), [INFO] [stdout] | ^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 17 | Some(_) => find_left_most_child(node.unwrap().left), [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `left` on type `Option` [INFO] [stdout] --> src/next_successor.rs:17:47 [INFO] [stdout] | [INFO] [stdout] 17 | Some(_) => find_left_most_child(node.left), [INFO] [stdout] | ^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 17 | Some(_) => find_left_most_child(node.unwrap().left), [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `parent` on type `Option` [INFO] [stdout] --> src/next_successor.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 23 | if None(node.parent) { [INFO] [stdout] | ^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 23 | if None(node.unwrap().parent) { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0618]: expected function, found `Option<_>` [INFO] [stdout] --> src/next_successor.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 23 | if None(node.parent) { [INFO] [stdout] | ^^^^------------- [INFO] [stdout] | | [INFO] [stdout] | call expression requires function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `parent` on type `Option` [INFO] [stdout] --> src/next_successor.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 23 | if None(node.parent) { [INFO] [stdout] | ^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 23 | if None(node.unwrap().parent) { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `parent` on type `Option` [INFO] [stdout] --> src/next_successor.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | if node.parent.right != node { [INFO] [stdout] | ^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 27 | if node.unwrap().parent.right != node { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `parent` on type `Option` [INFO] [stdout] --> src/next_successor.rs:31:33 [INFO] [stdout] | [INFO] [stdout] 31 | find_right_most_parent(node.parent) [INFO] [stdout] | ^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 31 | find_right_most_parent(node.unwrap().parent) [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0618]: expected function, found `Option<_>` [INFO] [stdout] --> src/next_successor.rs:23:8 [INFO] [stdout] | [INFO] [stdout] 23 | if None(node.parent) { [INFO] [stdout] | ^^^^------------- [INFO] [stdout] | | [INFO] [stdout] | call expression requires function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `parent` on type `Option` [INFO] [stdout] --> src/next_successor.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | if node.parent.right != node { [INFO] [stdout] | ^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 27 | if node.unwrap().parent.right != node { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0609]: no field `parent` on type `Option` [INFO] [stdout] --> src/next_successor.rs:31:33 [INFO] [stdout] | [INFO] [stdout] 31 | find_right_most_parent(node.parent) [INFO] [stdout] | ^^^^^^ unknown field [INFO] [stdout] | [INFO] [stdout] help: one of the expressions' fields has a field of the same name [INFO] [stdout] | [INFO] [stdout] 31 | find_right_most_parent(node.unwrap().parent) [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 19 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0023, E0072, E0106, E0107, E0308, E0532, E0609, E0618. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0023`. [INFO] [stdout] [INFO] [stdout] error: aborting due to 19 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0023, E0072, E0106, E0107, E0308, E0532, E0609, E0618. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0023`. [INFO] [stdout] [INFO] [stderr] error: could not compile `rustgorithms` (bin "rustgorithms" test) due to 20 previous errors [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: could not compile `rustgorithms` (bin "rustgorithms") due to 20 previous errors [INFO] running `Command { std: "docker" "inspect" "a239fc21516caa277318290b397a9d40f84f83c940759e8cffb98e47413106fa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a239fc21516caa277318290b397a9d40f84f83c940759e8cffb98e47413106fa", kill_on_drop: false }` [INFO] [stdout] a239fc21516caa277318290b397a9d40f84f83c940759e8cffb98e47413106fa