[INFO] cloning repository https://github.com/DuyDangCode/Homework_Lesson_4_Rust_Generic_Type_and_Traits
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/DuyDangCode/Homework_Lesson_4_Rust_Generic_Type_and_Traits" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDuyDangCode%2FHomework_Lesson_4_Rust_Generic_Type_and_Traits", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDuyDangCode%2FHomework_Lesson_4_Rust_Generic_Type_and_Traits'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 680d4ade380b75da41d0cc04aa3e7c5cd900b925
[INFO] checking DuyDangCode/Homework_Lesson_4_Rust_Generic_Type_and_Traits against try#a3dffdb3a32d0dedc198f9de7d43173f3eb6727b for pr-136303
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDuyDangCode%2FHomework_Lesson_4_Rust_Generic_Type_and_Traits" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/DuyDangCode/Homework_Lesson_4_Rust_Generic_Type_and_Traits on toolchain a3dffdb3a32d0dedc198f9de7d43173f3eb6727b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a3dffdb3a32d0dedc198f9de7d43173f3eb6727b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/DuyDangCode/Homework_Lesson_4_Rust_Generic_Type_and_Traits
[INFO] removed 0 missing tests
[INFO] finished tweaking git repo https://github.com/DuyDangCode/Homework_Lesson_4_Rust_Generic_Type_and_Traits
[INFO] tweaked toml for git repo https://github.com/DuyDangCode/Homework_Lesson_4_Rust_Generic_Type_and_Traits written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/DuyDangCode/Homework_Lesson_4_Rust_Generic_Type_and_Traits 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" "+a3dffdb3a32d0dedc198f9de7d43173f3eb6727b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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:c80049f3b88b82089a44e0f06d0d6029d44b96b7257e55a1cd63dbc9f4c33334" "/opt/rustwide/cargo-home/bin/cargo" "+a3dffdb3a32d0dedc198f9de7d43173f3eb6727b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5af646f0d81ee658d68ff4eb8cc9beb933fe21cbd8c7a62eed7c3d6f7dbbf9dc
[INFO] running `Command { std: "docker" "start" "-a" "5af646f0d81ee658d68ff4eb8cc9beb933fe21cbd8c7a62eed7c3d6f7dbbf9dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5af646f0d81ee658d68ff4eb8cc9beb933fe21cbd8c7a62eed7c3d6f7dbbf9dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5af646f0d81ee658d68ff4eb8cc9beb933fe21cbd8c7a62eed7c3d6f7dbbf9dc", kill_on_drop: false }`
[INFO] [stdout] 5af646f0d81ee658d68ff4eb8cc9beb933fe21cbd8c7a62eed7c3d6f7dbbf9dc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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:c80049f3b88b82089a44e0f06d0d6029d44b96b7257e55a1cd63dbc9f4c33334" "/opt/rustwide/cargo-home/bin/cargo" "+a3dffdb3a32d0dedc198f9de7d43173f3eb6727b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f4177d861cf3101e428642fca57fffba37db38fce9e6f023c56fbd25e94ea6f5
[INFO] running `Command { std: "docker" "start" "-a" "f4177d861cf3101e428642fca57fffba37db38fce9e6f023c56fbd25e94ea6f5", kill_on_drop: false }`
[INFO] [stderr]     Checking Rust-Bootcamp-2023 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking basic-of-rust v0.1.0 (/opt/rustwide/workdir/exercises/basic-of-rust)
[INFO] [stderr]     Checking complex-type v0.1.0 (/opt/rustwide/workdir/exercises/complex-type)
[INFO] [stderr]     Checking generic-type v0.1.0 (/opt/rustwide/workdir/exercises/generic-type)
[INFO] [stderr]     Checking ownership-borrowing v0.1.0 (/opt/rustwide/workdir/exercises/ownership-borrowing)
[INFO] [stderr]     Checking traits v0.1.0 (/opt/rustwide/workdir/exercises/traits)
[INFO] [stdout] error: expected one of `:`, `@`, or `|`, found `,`
[INFO] [stdout]  --> exercises/basic-of-rust/src/functions.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(x, y: i32) {
[INFO] [stdout]   |         ^ expected one of `:`, `@`, or `|`
[INFO] [stdout]   |
[INFO] [stdout]   = note: anonymous parameters are removed in the 2018 edition (see RFC 1685)
[INFO] [stdout] help: if this is a `self` type, give it a parameter name
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(self: x, y: i32) {
[INFO] [stdout]   |        +++++
[INFO] [stdout] help: if this is a parameter name, give it a type
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(x: TypeName, y: i32) {
[INFO] [stdout]   |         ++++++++++
[INFO] [stdout] help: if this is a type, explicitly ignore the parameter name
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(_: x, y: i32) {
[INFO] [stdout]   |        ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found `{`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:156:39
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl Package {
[INFO] [stdout]     |              - while parsing this item list starting here
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn is_international(&self) -> ??? {
[INFO] [stdout]     |                                       ^ expected identifier
[INFO] [stdout] ...
[INFO] [stdout] 163 | }
[INFO] [stdout]     | - the item list ends here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found `{`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:156:39
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl Package {
[INFO] [stdout]     |              - while parsing this item list starting here
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn is_international(&self) -> ??? {
[INFO] [stdout]     |                                       ^ expected identifier
[INFO] [stdout] ...
[INFO] [stdout] 163 | }
[INFO] [stdout]     | - the item list ends here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `integer`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let integer = Position { x: 5, y: 10 };
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_integer`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `float`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let float = Position { x: 1.0, y: 4.0 };
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_float`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let p = Point {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `:`, `@`, or `|`, found `,`
[INFO] [stdout]  --> exercises/basic-of-rust/src/functions.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(x, y: i32) {
[INFO] [stdout]   |         ^ expected one of `:`, `@`, or `|`
[INFO] [stdout]   |
[INFO] [stdout]   = note: anonymous parameters are removed in the 2018 edition (see RFC 1685)
[INFO] [stdout] help: if this is a `self` type, give it a parameter name
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(self: x, y: i32) {
[INFO] [stdout]   |        +++++
[INFO] [stdout] help: if this is a parameter name, give it a type
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(x: TypeName, y: i32) {
[INFO] [stdout]   |         ++++++++++
[INFO] [stdout] help: if this is a type, explicitly ignore the parameter name
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(_: x, y: i32) {
[INFO] [stdout]   |        ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]  --> exercises/generic-type/src/lib.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | struct Position<T> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise1` is never used
[INFO] [stdout]  --> exercises/generic-type/src/lib.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn exercise1() {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Point<T, U> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise2` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn exercise2() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Val` is never constructed
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | struct Val<T> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `value` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl<T> Val<T> {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 38 |     fn value(&self) -> &T {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise3` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn exercise3() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `()` doesn't implement `std::fmt::Display`
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 |     println!("{}", s2);
[INFO] [stdout]    |                    ^^ `()` cannot be formatted with the default formatter
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `std::fmt::Display` is not implemented for `()`
[INFO] [stdout]    = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
[INFO] [stdout]    = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_max` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:57:4
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn find_max<T: Ord>(collection: &[T]) -> Option<&T> {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reverse_collection` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:66:4
[INFO] [stdout]    |
[INFO] [stdout] 66 | fn reverse_collection<T>(collection: &mut [T]) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `contains_value` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn contains_value<T: PartialEq<T>>(collection: &[T], value: &T) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> exercises/traits/src/lib.rs:81:23
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn static_dispatch<T>(x: T) {}
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn foo_if_fizz(fizzish: &str) -> &str {
[INFO] [stdout]    |                                      ---- expected `&str` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 26 |         1
[INFO] [stdout]    |         ^ expected `&str`, found integer
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0600]: cannot apply unary operator `-` to type `u32`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:77:35
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let result = check_number(-5);
[INFO] [stdout]    |                                   ^^ cannot apply unary operator `-`
[INFO] [stdout]    |
[INFO] [stdout]    = note: unsigned values cannot be negated
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]  --> exercises/ownership-borrowing/src/lib.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let y = x;
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `z`
[INFO] [stdout]  --> exercises/ownership-borrowing/src/lib.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let z = x;
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_z`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `x`
[INFO] [stdout]  --> exercises/ownership-borrowing/src/lib.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 5 |     let x = String::from("hello, world");
[INFO] [stdout]   |         - move occurs because `x` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 6 |     let y = x;
[INFO] [stdout]   |             - value moved here
[INFO] [stdout] 7 |     let z = x;
[INFO] [stdout]   |             ^ value used here after move
[INFO] [stdout]   |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let y = x.clone();
[INFO] [stdout]   |              ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:42:23
[INFO] [stdout]    |
[INFO] [stdout] 42 |         assert_eq!(s, 3);
[INFO] [stdout]    |                       ^ expected `()`, found integer
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]  --> exercises/basic-of-rust/src/conditions.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn bigger(a: i32, b: i32) -> i32 {
[INFO] [stdout]   |               ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]  --> exercises/basic-of-rust/src/conditions.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn bigger(a: i32, b: i32) -> i32 {
[INFO] [stdout]   |                       ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `number`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn check_number(number: u32) -> &'static str {
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `year`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn is_leap_year(year: i32) -> bool {
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_year`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn factorial(n: u32) -> u32 {
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn is_prime(n: u32) -> bool {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `__` in this scope
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let msgs: __ = [
[INFO] [stdout]    |               ^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `()` doesn't implement `std::fmt::Display`
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 |     println!("{}", s2);
[INFO] [stdout]    |                    ^^ `()` cannot be formatted with the default formatter
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `std::fmt::Display` is not implemented for `()`
[INFO] [stdout]    = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
[INFO] [stdout]    = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:11:21
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn sum_one_to_n(n: u32) -> u32 {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `numbers`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn calculate_average(numbers: &[f64]) -> f64 {
[INFO] [stdout]    |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_numbers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `numbers`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn sum_even_numbers(numbers: &[i32]) -> i32 {
[INFO] [stdout]    |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_numbers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `__` in this scope
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let msgs: __ = [
[INFO] [stdout]    |               ^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn foo_if_fizz(fizzish: &str) -> &str {
[INFO] [stdout]    |                                      ---- expected `&str` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 26 |         1
[INFO] [stdout]    |         ^ expected `&str`, found integer
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `additions`
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let additions: Vec<usize> = vec![0];
[INFO] [stdout]    |         --------- move occurs because `additions` has type `Vec<usize>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 40 |     while additions.len() > 0 {
[INFO] [stdout]    |     ------^^^^^^^^^----------
[INFO] [stdout]    |     |     |
[INFO] [stdout]    |     |     value borrowed here after move
[INFO] [stdout]    |     inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 44 |         for element_index in additions {
[INFO] [stdout]    |                              --------- `additions` moved due to this implicit call to `.into_iter()`, in previous iteration of loop
[INFO] [stdout]    |
[INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `additions`
[INFO] [stdout]   --> /rustc/a3dffdb3a32d0dedc198f9de7d43173f3eb6727b/library/core/src/iter/traits/collect.rs:313:18
[INFO] [stdout] help: consider iterating over a slice of the `Vec<usize>`'s content to avoid moving into the `for` loop
[INFO] [stdout]    |
[INFO] [stdout] 44 |         for element_index in &additions {
[INFO] [stdout]    |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing local variable `str_value`
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let str_ref: &str = &str_value; // Obtain a reference to the String
[INFO] [stdout]    |                         ---------- `str_value` is borrowed here
[INFO] [stdout] 56 |     str_ref // Return the reference to the String
[INFO] [stdout]    |     ^^^^^^^ returns a value referencing data owned by the current function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `value` does not live long enough
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:72:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let value = "3.0".to_string();
[INFO] [stdout]    |                 ----- binding `value` declared here
[INFO] [stdout] 71 |             my_map.insert(key, value);
[INFO] [stdout] 72 |             &value // HERE IT FAILS
[INFO] [stdout]    |             ^^^^^^ borrowed value does not live long enough
[INFO] [stdout] 73 |         }
[INFO] [stdout]    |         - `value` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `value`
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:72:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let value = "3.0".to_string();
[INFO] [stdout]    |                 ----- move occurs because `value` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 71 |             my_map.insert(key, value);
[INFO] [stdout]    |                                ----- value moved here
[INFO] [stdout] 72 |             &value // HERE IT FAILS
[INFO] [stdout]    |             ^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 71 |             my_map.insert(key, value.clone());
[INFO] [stdout]    |                                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0600]: cannot apply unary operator `-` to type `u32`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:77:35
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let result = check_number(-5);
[INFO] [stdout]    |                                   ^^ cannot apply unary operator `-`
[INFO] [stdout]    |
[INFO] [stdout]    = note: unsigned values cannot be negated
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0600.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `s` does not live long enough
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:90:31
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let s = line.unwrap();
[INFO] [stdout]    |             - binding `s` declared here
[INFO] [stdout] 89 |
[INFO] [stdout] 90 |         let data: Vec<&str> = s.split("\t").collect();
[INFO] [stdout]    |                               ^ borrowed value does not live long enough
[INFO] [stdout] 91 |         if prev_key.len() == 0 {
[INFO] [stdout]    |            -------- borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 94 |     }
[INFO] [stdout]    |     - `s` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 |     s.push(" world");
[INFO] [stdout]    |       ---- ^^^^^^^^ expected `char`, found `&str`
[INFO] [stdout]    |       |
[INFO] [stdout]    |       arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> /rustc/a3dffdb3a32d0dedc198f9de7d43173f3eb6727b/library/alloc/src/string.rs:1419:12
[INFO] [stdout] help: you might have meant to use `push_str`
[INFO] [stdout]    |
[INFO] [stdout] 12 |     s.push_str(" world");
[INFO] [stdout]    |       ~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `chars` does not live long enough
[INFO] [stdout]    --> exercises/ownership-borrowing/src/lib.rs:103:43
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let chars = [b'x', b'y', b'z'];
[INFO] [stdout]     |             ----- binding `chars` declared here
[INFO] [stdout] 103 |         let s: &str = std::str::from_utf8(&chars).unwrap();
[INFO] [stdout]     |                                           ^^^^^^ borrowed value does not live long enough
[INFO] [stdout] 104 |         v.push(&s);
[INFO] [stdout] 105 |     }
[INFO] [stdout]     |     - `chars` dropped here while still borrowed
[INFO] [stdout] 106 |     println!("{:?}", v);
[INFO] [stdout]     |                      - borrow later used here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `integer`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let integer = Position { x: 5, y: 10 };
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_integer`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `float`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let float = Position { x: 1.0, y: 4.0 };
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_float`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected identifier, found `{`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:156:39
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl Package {
[INFO] [stdout]     |              - while parsing this item list starting here
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn is_international(&self) -> ??? {
[INFO] [stdout]     |                                       ^ expected identifier
[INFO] [stdout] ...
[INFO] [stdout] 163 | }
[INFO] [stdout]     | - the item list ends here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let p = Point {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `add_input` does not live long enough
[INFO] [stdout]    --> exercises/ownership-borrowing/src/lib.rs:121:34
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut add_input = String::from("");
[INFO] [stdout]     |             ------------- binding `add_input` declared here
[INFO] [stdout] ...
[INFO] [stdout] 121 |         let add_vec: Vec<&str> = add_input.trim()[..].split_whitespace().collect();
[INFO] [stdout]     |                                  ^^^^^^^^^ borrowed value does not live long enough
[INFO] [stdout] ...
[INFO] [stdout] 129 |         accounting.push(person);
[INFO] [stdout]     |         ---------- borrow later used here
[INFO] [stdout] 130 |     }
[INFO] [stdout]     |     - `add_input` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `Rust-Bootcamp-2023` (test "conditions") due to 2 previous errors; 6 warnings emitted
[INFO] [stdout] error[E0277]: `MessageOne` doesn't implement `std::fmt::Display`
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 |     println!("{}", msg);
[INFO] [stdout]    |                    ^^^ `MessageOne` cannot be formatted with the default formatter
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `std::fmt::Display` is not implemented for `MessageOne`
[INFO] [stdout]    = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
[INFO] [stdout]    = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] Some errors have detailed explanations: E0277, E0382, E0515, E0597.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `Rust-Bootcamp-2023` (test "functions") due to 2 previous errors; 3 warnings emitted
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `MessageOne` doesn't implement `std::fmt::Display`
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 |     println!("{}", msg);
[INFO] [stdout]    |                    ^^^ `MessageOne` cannot be formatted with the default formatter
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `std::fmt::Display` is not implemented for `MessageOne`
[INFO] [stdout]    = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
[INFO] [stdout]    = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: expected one of `:`, `@`, or `|`, found `,`
[INFO] [stdout]  --> exercises/basic-of-rust/src/functions.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(x, y: i32) {
[INFO] [stdout]   |         ^ expected one of `:`, `@`, or `|`
[INFO] [stdout]   |
[INFO] [stdout]   = note: anonymous parameters are removed in the 2018 edition (see RFC 1685)
[INFO] [stdout] help: if this is a `self` type, give it a parameter name
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(self: x, y: i32) {
[INFO] [stdout]   |        +++++
[INFO] [stdout] help: if this is a parameter name, give it a type
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(x: TypeName, y: i32) {
[INFO] [stdout]   |         ++++++++++
[INFO] [stdout] help: if this is a type, explicitly ignore the parameter name
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn sum(_: x, y: i32) {
[INFO] [stdout]   |        ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]  --> exercises/ownership-borrowing/src/lib.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let y = x;
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `z`
[INFO] [stdout]  --> exercises/ownership-borrowing/src/lib.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let z = x;
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_z`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `x`
[INFO] [stdout]  --> exercises/ownership-borrowing/src/lib.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 5 |     let x = String::from("hello, world");
[INFO] [stdout]   |         - move occurs because `x` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 6 |     let y = x;
[INFO] [stdout]   |             - value moved here
[INFO] [stdout] 7 |     let z = x;
[INFO] [stdout]   |             ^ value used here after move
[INFO] [stdout]   |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let y = x.clone();
[INFO] [stdout]   |              ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 |     s += "!".to_string();
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^ expected `&str`, found `String`
[INFO] [stdout]    |
[INFO] [stdout] help: try removing the method call
[INFO] [stdout]    |
[INFO] [stdout] 13 -     s += "!".to_string();
[INFO] [stdout] 13 +     s += "!";
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let s3 = s1 + s2;
[INFO] [stdout]    |                   ^^ expected `&str`, found `String`
[INFO] [stdout]    |
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let s3 = s1 + &s2;
[INFO] [stdout]    |                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `self.value`, which is behind a `&` reference
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         self.value += num;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ `self` is a `&` reference, so the data it refers to cannot be written
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing this to be a mutable reference
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn add(&mut self, num: i32) {
[INFO] [stdout]    |             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]  --> exercises/generic-type/src/lib.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | struct Position<T> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise1` is never used
[INFO] [stdout]  --> exercises/generic-type/src/lib.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn exercise1() {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Point<T, U> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise2` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn exercise2() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Val` is never constructed
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | struct Val<T> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `value` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl<T> Val<T> {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 38 |     fn value(&self) -> &T {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise3` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn exercise3() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `self.value`, as `self` is not declared as mutable
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         self.value = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing this to be mutable
[INFO] [stdout]    |
[INFO] [stdout] 71 |     fn clear(mut self) {
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u2`
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let u2 = User {
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_u2`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `u1`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:102:29
[INFO] [stdout]     |
[INFO] [stdout] 96  |       let u2 = User {
[INFO] [stdout]     |  ______________-
[INFO] [stdout] 97  | |         first: String::from("Mary"),
[INFO] [stdout] 98  | |         ..u1
[INFO] [stdout] 99  | |         
[INFO] [stdout] 100 | |     };
[INFO] [stdout]     | |_____- value partially moved here
[INFO] [stdout] 101 |
[INFO] [stdout] 102 |       println!("user: {:#?}", u1);
[INFO] [stdout]     |                               ^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because `u1.last` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]     = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `moved`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_moved`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `moved_field`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val;
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_moved_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ownership-borrowing` (lib) due to 9 previous errors; 2 warnings emitted
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Foo>`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:125:17
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |                 ^^^^^^^ move occurs because value has type `Foo`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Foo` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:108:1
[INFO] [stdout]     |
[INFO] [stdout] 108 | struct Foo {
[INFO] [stdout]     | ^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout] ...
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |                 ------- you could clone this value
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = &foos[0];
[INFO] [stdout]     |                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `ChangeColor` found for enum `Message` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:120:32
[INFO] [stdout]     |
[INFO] [stdout] 30  | enum Message {
[INFO] [stdout]     | ------------ variant or associated item `ChangeColor` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 120 |         state.process(Message::ChangeColor(255, 0, 255));
[INFO] [stdout]     |                                ^^^^^^^^^^^ variant or associated item not found in `Message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `additions`
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let additions: Vec<usize> = vec![0];
[INFO] [stdout]    |         --------- move occurs because `additions` has type `Vec<usize>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 40 |     while additions.len() > 0 {
[INFO] [stdout]    |     ------^^^^^^^^^----------
[INFO] [stdout]    |     |     |
[INFO] [stdout]    |     |     value borrowed here after move
[INFO] [stdout]    |     inside of this loop
[INFO] [stdout] ...
[INFO] [stdout] 44 |         for element_index in additions {
[INFO] [stdout]    |                              --------- `additions` moved due to this implicit call to `.into_iter()`, in previous iteration of loop
[INFO] [stdout]    |
[INFO] [stdout] note: `into_iter` takes ownership of the receiver `self`, which moves `additions`
[INFO] [stdout]   --> /rustc/a3dffdb3a32d0dedc198f9de7d43173f3eb6727b/library/core/src/iter/traits/collect.rs:313:18
[INFO] [stdout] help: consider iterating over a slice of the `Vec<usize>`'s content to avoid moving into the `for` loop
[INFO] [stdout]    |
[INFO] [stdout] 44 |         for element_index in &additions {
[INFO] [stdout]    |                              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0515]: cannot return value referencing local variable `str_value`
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let str_ref: &str = &str_value; // Obtain a reference to the String
[INFO] [stdout]    |                         ---------- `str_value` is borrowed here
[INFO] [stdout] 56 |     str_ref // Return the reference to the String
[INFO] [stdout]    |     ^^^^^^^ returns a value referencing data owned by the current function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Foo>`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^ move occurs because value has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = &foos[0].str_val;
[INFO] [stdout]     |                       +
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val.clone();
[INFO] [stdout]     |                                      ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:62:27
[INFO] [stdout]    |
[INFO] [stdout] 62 |     fn process(&mut self, message: Message) {
[INFO] [stdout]    |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: type `&Direction` is non-empty
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 |         match self {
[INFO] [stdout]    |               ^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: `Direction` defined here
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:72:6
[INFO] [stdout]    |
[INFO] [stdout] 72 | enum Direction {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout]    = note: the matched value is of type `&Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 81 ~         match self {
[INFO] [stdout] 82 +             _ => todo!(),
[INFO] [stdout] 83 +         }
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Echo` found for enum `Message` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:121:32
[INFO] [stdout]     |
[INFO] [stdout] 30  | enum Message {
[INFO] [stdout]     | ------------ variant or associated item `Echo` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 121 |         state.process(Message::Echo(String::from("hello world")));
[INFO] [stdout]     |                                ^^^^ variant or associated item not found in `Message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:42:23
[INFO] [stdout]    |
[INFO] [stdout] 42 |         assert_eq!(s, 3);
[INFO] [stdout]    |                       ^ expected `()`, found integer
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `value` does not live long enough
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:72:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let value = "3.0".to_string();
[INFO] [stdout]    |                 ----- binding `value` declared here
[INFO] [stdout] 71 |             my_map.insert(key, value);
[INFO] [stdout] 72 |             &value // HERE IT FAILS
[INFO] [stdout]    |             ^^^^^^ borrowed value does not live long enough
[INFO] [stdout] 73 |         }
[INFO] [stdout]    |         - `value` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `Operation::Add`, `Operation::Subtract`, `Operation::Multiply` and 1 more not covered
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 |     match operation {
[INFO] [stdout]     |           ^^^^^^^^^ patterns `Operation::Add`, `Operation::Subtract`, `Operation::Multiply` and 1 more not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `Operation` defined here
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:92:6
[INFO] [stdout]     |
[INFO] [stdout] 92  | enum Operation {
[INFO] [stdout]     |      ^^^^^^^^^
[INFO] [stdout] 93  |     Add,
[INFO] [stdout]     |     --- not covered
[INFO] [stdout] 94  |     Subtract,
[INFO] [stdout]     |     -------- not covered
[INFO] [stdout] 95  |     Multiply,
[INFO] [stdout]     |     -------- not covered
[INFO] [stdout] 96  |     Divide,
[INFO] [stdout]     |     ------ not covered
[INFO] [stdout]     = note: the matched value is of type `Operation`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown, or multiple match arms
[INFO] [stdout]     |
[INFO] [stdout] 101 ~     match operation {
[INFO] [stdout] 102 +         _ => todo!(),
[INFO] [stdout] 103 +     }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Move` found for enum `Message` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:122:32
[INFO] [stdout]     |
[INFO] [stdout] 30  | enum Message {
[INFO] [stdout]     | ------------ variant or associated item `Move` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 122 |         state.process(Message::Move(Point { x: 10, y: 15 }));
[INFO] [stdout]     |                                ^^^^ variant or associated item not found in `Message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Person`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         assert_eq!(p, p_expectation);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         Person
[INFO] [stdout]     |         Person
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Person`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:5:1
[INFO] [stdout]     |
[INFO] [stdout] 5   | struct Person {
[INFO] [stdout]     | ^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Person` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 5   + #[derive(PartialEq)]
[INFO] [stdout] 6   | struct Person {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0004, E0277, E0382, E0412, E0507, E0594.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `value`
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:72:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |             let value = "3.0".to_string();
[INFO] [stdout]    |                 ----- move occurs because `value` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout] 71 |             my_map.insert(key, value);
[INFO] [stdout]    |                                ----- value moved here
[INFO] [stdout] 72 |             &value // HERE IT FAILS
[INFO] [stdout]    |             ^^^^^^ value borrowed here after move
[INFO] [stdout]    |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 71 |             my_map.insert(key, value.clone());
[INFO] [stdout]    |                                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Quit` found for enum `Message` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:123:32
[INFO] [stdout]     |
[INFO] [stdout] 30  | enum Message {
[INFO] [stdout]     | ------------ variant or associated item `Quit` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 123 |         state.process(Message::Quit);
[INFO] [stdout]     |                                ^^^^ variant or associated item not found in `Message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         assert_eq!(Direction::North.opposite(), Direction::South);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         Direction
[INFO] [stdout]     |         Direction
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout] 72  | enum Direction {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(PartialEq)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `s` does not live long enough
[INFO] [stdout]   --> exercises/ownership-borrowing/src/lib.rs:90:31
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let s = line.unwrap();
[INFO] [stdout]    |             - binding `s` declared here
[INFO] [stdout] 89 |
[INFO] [stdout] 90 |         let data: Vec<&str> = s.split("\t").collect();
[INFO] [stdout]    |                               ^ borrowed value does not live long enough
[INFO] [stdout] 91 |         if prev_key.len() == 0 {
[INFO] [stdout]    |            -------- borrow later used here
[INFO] [stdout] ...
[INFO] [stdout] 94 |     }
[INFO] [stdout]    |     - `s` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `chars` does not live long enough
[INFO] [stdout]    --> exercises/ownership-borrowing/src/lib.rs:103:43
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let chars = [b'x', b'y', b'z'];
[INFO] [stdout]     |             ----- binding `chars` declared here
[INFO] [stdout] 103 |         let s: &str = std::str::from_utf8(&chars).unwrap();
[INFO] [stdout]     |                                           ^^^^^^ borrowed value does not live long enough
[INFO] [stdout] 104 |         v.push(&s);
[INFO] [stdout] 105 |     }
[INFO] [stdout]     |     - `chars` dropped here while still borrowed
[INFO] [stdout] 106 |     println!("{:?}", v);
[INFO] [stdout]     |                      - borrow later used here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0597]: `add_input` does not live long enough
[INFO] [stdout]    --> exercises/ownership-borrowing/src/lib.rs:121:34
[INFO] [stdout]     |
[INFO] [stdout] 115 |         let mut add_input = String::from("");
[INFO] [stdout]     |             ------------- binding `add_input` declared here
[INFO] [stdout] ...
[INFO] [stdout] 121 |         let add_vec: Vec<&str> = add_input.trim()[..].split_whitespace().collect();
[INFO] [stdout]     |                                  ^^^^^^^^^ borrowed value does not live long enough
[INFO] [stdout] ...
[INFO] [stdout] 129 |         accounting.push(person);
[INFO] [stdout]     |         ---------- borrow later used here
[INFO] [stdout] 130 |     }
[INFO] [stdout]     |     - `add_input` dropped here while still borrowed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]  --> exercises/basic-of-rust/src/conditions.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn bigger(a: i32, b: i32) -> i32 {
[INFO] [stdout]   |               ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]  --> exercises/basic-of-rust/src/conditions.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn bigger(a: i32, b: i32) -> i32 {
[INFO] [stdout]   |                       ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `number`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn check_number(number: u32) -> &'static str {
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         assert_eq!(Direction::North.opposite(), Direction::South);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Direction` or manually `impl Debug for Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         assert_eq!(Direction::North.opposite(), Direction::South);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Direction` or manually `impl Debug for Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         assert_eq!(Direction::East.opposite(), Direction::West);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         Direction
[INFO] [stdout]     |         Direction
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout] 72  | enum Direction {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(PartialEq)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `year`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn is_leap_year(year: i32) -> bool {
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_year`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0382, E0515, E0597.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn factorial(n: u32) -> u32 {
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         assert_eq!(Direction::East.opposite(), Direction::West);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Direction` or manually `impl Debug for Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn is_prime(n: u32) -> bool {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn foo_if_fizz(fizzish: &str) -> &str {
[INFO] [stdout]    |                                      ---- expected `&str` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 26 |         1
[INFO] [stdout]    |         ^ expected `&str`, found integer
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `__` in this scope
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let msgs: __ = [
[INFO] [stdout]    |               ^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Person` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         assert_eq!(p, p_expectation);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Person` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Person`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Person` or manually `impl Debug for Person`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Person` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 5   + #[derive(Debug)]
[INFO] [stdout] 6   | struct Person {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Person` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         assert_eq!(p, p_expectation);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Person` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Person`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Person` or manually `impl Debug for Person`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Person` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 5   + #[derive(Debug)]
[INFO] [stdout] 6   | struct Person {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         assert_eq!(Direction::East.opposite(), Direction::West);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Direction` or manually `impl Debug for Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 |     s.push(" world");
[INFO] [stdout]    |       ---- ^^^^^^^^ expected `char`, found `&str`
[INFO] [stdout]    |       |
[INFO] [stdout]    |       arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> /rustc/a3dffdb3a32d0dedc198f9de7d43173f3eb6727b/library/alloc/src/string.rs:1419:12
[INFO] [stdout] help: you might have meant to use `push_str`
[INFO] [stdout]    |
[INFO] [stdout] 12 |     s.push_str(" world");
[INFO] [stdout]    |       ~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |         assert_eq!(Direction::South.opposite(), Direction::North);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         Direction
[INFO] [stdout]     |         Direction
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout] 72  | enum Direction {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(PartialEq)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |         assert_eq!(Direction::South.opposite(), Direction::North);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Direction` or manually `impl Debug for Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |         assert_eq!(Direction::South.opposite(), Direction::North);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Direction` or manually `impl Debug for Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         assert_eq!(Direction::West.opposite(), Direction::East);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         Direction
[INFO] [stdout]     |         Direction
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout] 72  | enum Direction {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(PartialEq)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         assert_eq!(Direction::West.opposite(), Direction::East);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Direction` or manually `impl Debug for Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         assert_eq!(Direction::West.opposite(), Direction::East);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `Direction` or manually `impl Debug for Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]  --> exercises/basic-of-rust/src/strings.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn exercise1(color: &str) -> String {
[INFO] [stdout]   |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:28:19
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn reverse_string(input: &str) -> String {
[INFO] [stdout]    |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn is_palindrome(word: &str) -> bool {
[INFO] [stdout]    |                  ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `string`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:41:27
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn count_char_occurrences(string: &str, ch: char) -> usize {
[INFO] [stdout]    |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ch`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:41:41
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn count_char_occurrences(string: &str, ch: char) -> usize {
[INFO] [stdout]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_ch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:62:27
[INFO] [stdout]    |
[INFO] [stdout] 62 |     fn process(&mut self, message: Message) {
[INFO] [stdout]    |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: type `&Direction` is non-empty
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 |         match self {
[INFO] [stdout]    |               ^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: `Direction` defined here
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:72:6
[INFO] [stdout]    |
[INFO] [stdout] 72 | enum Direction {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout]    = note: the matched value is of type `&Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 81 ~         match self {
[INFO] [stdout] 82 +             _ => todo!(),
[INFO] [stdout] 83 +         }
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `Operation::Add`, `Operation::Subtract`, `Operation::Multiply` and 1 more not covered
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 |     match operation {
[INFO] [stdout]     |           ^^^^^^^^^ patterns `Operation::Add`, `Operation::Subtract`, `Operation::Multiply` and 1 more not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `Operation` defined here
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:92:6
[INFO] [stdout]     |
[INFO] [stdout] 92  | enum Operation {
[INFO] [stdout]     |      ^^^^^^^^^
[INFO] [stdout] 93  |     Add,
[INFO] [stdout]     |     --- not covered
[INFO] [stdout] 94  |     Subtract,
[INFO] [stdout]     |     -------- not covered
[INFO] [stdout] 95  |     Multiply,
[INFO] [stdout]     |     -------- not covered
[INFO] [stdout] 96  |     Divide,
[INFO] [stdout]     |     ------ not covered
[INFO] [stdout]     = note: the matched value is of type `Operation`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown, or multiple match arms
[INFO] [stdout]     |
[INFO] [stdout] 101 ~     match operation {
[INFO] [stdout] 102 +         _ => todo!(),
[INFO] [stdout] 103 +     }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0004, E0277, E0369, E0412, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `integer`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |     let integer = Position { x: 5, y: 10 };
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_integer`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `float`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     let float = Position { x: 1.0, y: 4.0 };
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_float`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let p = Point {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:11:21
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn sum_one_to_n(n: u32) -> u32 {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `numbers`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn calculate_average(numbers: &[f64]) -> f64 {
[INFO] [stdout]    |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_numbers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `numbers`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn sum_even_numbers(numbers: &[i32]) -> i32 {
[INFO] [stdout]    |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_numbers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `complex-type` (lib) due to 10 previous errors; 4 warnings emitted
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 |     s += "!".to_string();
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^ expected `&str`, found `String`
[INFO] [stdout]    |
[INFO] [stdout] help: try removing the method call
[INFO] [stdout]    |
[INFO] [stdout] 13 -     s += "!".to_string();
[INFO] [stdout] 13 +     s += "!";
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ownership-borrowing` (lib test) due to 9 previous errors; 2 warnings emitted
[INFO] [stderr] error: could not compile `Rust-Bootcamp-2023` (test "enums") due to 20 previous errors; 1 warning emitted
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let s3 = s1 + s2;
[INFO] [stdout]    |                   ^^ expected `&str`, found `String`
[INFO] [stdout]    |
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let s3 = s1 + &s2;
[INFO] [stdout]    |                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0600.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a`
[INFO] [stdout]  --> exercises/basic-of-rust/src/conditions.rs:6:15
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn bigger(a: i32, b: i32) -> i32 {
[INFO] [stdout]   |               ^ help: if this is intentional, prefix it with an underscore: `_a`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]  --> exercises/basic-of-rust/src/conditions.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn bigger(a: i32, b: i32) -> i32 {
[INFO] [stdout]   |                       ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `number`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn check_number(number: u32) -> &'static str {
[INFO] [stdout]    |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `year`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn is_leap_year(year: i32) -> bool {
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_year`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn factorial(n: u32) -> u32 {
[INFO] [stdout]    |              ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/conditions.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn is_prime(n: u32) -> bool {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]  --> exercises/basic-of-rust/src/strings.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn exercise1(color: &str) -> String {
[INFO] [stdout]   |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:28:19
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn reverse_string(input: &str) -> String {
[INFO] [stdout]    |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn is_palindrome(word: &str) -> bool {
[INFO] [stdout]    |                  ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `string`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:41:27
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn count_char_occurrences(string: &str, ch: char) -> usize {
[INFO] [stdout]    |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ch`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:41:41
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn count_char_occurrences(string: &str, ch: char) -> usize {
[INFO] [stdout]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_ch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:11:21
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn sum_one_to_n(n: u32) -> u32 {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `numbers`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn calculate_average(numbers: &[f64]) -> f64 {
[INFO] [stdout]    |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_numbers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `numbers`
[INFO] [stdout]   --> exercises/basic-of-rust/src/functions.rs:27:21
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn sum_even_numbers(numbers: &[i32]) -> i32 {
[INFO] [stdout]    |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_numbers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]  --> exercises/generic-type/src/lib.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | struct Position<T> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise1` is never used
[INFO] [stdout]  --> exercises/generic-type/src/lib.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn exercise1() {
[INFO] [stdout]   |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Point<T, U> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise2` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:22:4
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn exercise2() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Val` is never constructed
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | struct Val<T> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `value` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl<T> Val<T> {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 38 |     fn value(&self) -> &T {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `exercise3` is never used
[INFO] [stdout]   --> exercises/generic-type/src/lib.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn exercise3() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_international` found for struct `Package` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:230:25
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Package {
[INFO] [stdout]     | -------------- method `is_international` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 230 |         assert!(package.is_international());
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^ method not found in `Package`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `basic-of-rust` (lib test) due to 7 previous errors; 14 warnings emitted
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> exercises/traits/src/lib.rs:81:23
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn static_dispatch<T>(x: T) {}
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Hello` is never used
[INFO] [stdout]  --> exercises/traits/src/lib.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | trait Hello {
[INFO] [stdout]   |       ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_international` found for struct `Package` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:241:26
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Package {
[INFO] [stdout]     | -------------- method `is_international` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 241 |         assert!(!package.is_international());
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^ method not found in `Package`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Student` is never constructed
[INFO] [stdout]   --> exercises/traits/src/lib.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Student {}
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 |     s.push(" world");
[INFO] [stdout]    |       ---- ^^^^^^^^ expected `char`, found `&str`
[INFO] [stdout]    |       |
[INFO] [stdout]    |       arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> /rustc/a3dffdb3a32d0dedc198f9de7d43173f3eb6727b/library/alloc/src/string.rs:1419:12
[INFO] [stdout] help: you might have meant to use `push_str`
[INFO] [stdout]    |
[INFO] [stdout] 12 |     s.push_str(" world");
[INFO] [stdout]    |       ~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Teacher` is never constructed
[INFO] [stdout]   --> exercises/traits/src/lib.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct Teacher {}
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> exercises/traits/src/lib.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct Point {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sum` is never used
[INFO] [stdout]   --> exercises/traits/src/lib.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn sum<T: std::ops::Add<Output = T>>(x: T, y: T) -> T {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Foo` is never used
[INFO] [stdout]   --> exercises/traits/src/lib.rs:64:7
[INFO] [stdout]    |
[INFO] [stdout] 64 | trait Foo {
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `static_dispatch` is never used
[INFO] [stdout]   --> exercises/traits/src/lib.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn static_dispatch<T>(x: T) {}
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dynamic_dispatch` is never used
[INFO] [stdout]   --> exercises/traits/src/lib.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn dynamic_dispatch(x: &impl Foo) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Draw` is never used
[INFO] [stdout]   --> exercises/traits/src/lib.rs:92:7
[INFO] [stdout]    |
[INFO] [stdout] 92 | trait Draw {
[INFO] [stdout]    |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_with_box` is never used
[INFO] [stdout]    --> exercises/traits/src/lib.rs:108:4
[INFO] [stdout]     |
[INFO] [stdout] 108 | fn draw_with_box(x: Box<dyn Draw>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_with_ref` is never used
[INFO] [stdout]    --> exercises/traits/src/lib.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn draw_with_ref(x: &dyn Draw) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Container` is never used
[INFO] [stdout]    --> exercises/traits/src/lib.rs:121:7
[INFO] [stdout]     |
[INFO] [stdout] 121 | trait Container {
[INFO] [stdout]     |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stack` is never constructed
[INFO] [stdout]    --> exercises/traits/src/lib.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | struct Stack {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `basic-of-rust` (lib) due to 5 previous errors; 14 warnings emitted
[INFO] [stdout] error[E0599]: no method named `get_fees` found for struct `Package` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:253:28
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Package {
[INFO] [stdout]     | -------------- method `get_fees` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 253 |         assert_eq!(package.get_fees(cents_per_gram), 4500);
[INFO] [stdout]     |                            ^^^^^^^^ method not found in `Package`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_fees` found for struct `Package` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:254:28
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Package {
[INFO] [stdout]     | -------------- method `get_fees` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 254 |         assert_eq!(package.get_fees(cents_per_gram * 2), 9000);
[INFO] [stdout]     |                            ^^^^^^^^ method not found in `Package`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `self.value`, which is behind a `&` reference
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         self.value += num;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ `self` is a `&` reference, so the data it refers to cannot be written
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing this to be a mutable reference
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn add(&mut self, num: i32) {
[INFO] [stdout]    |             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `self.value`, as `self` is not declared as mutable
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         self.value = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing this to be mutable
[INFO] [stdout]    |
[INFO] [stdout] 71 |     fn clear(mut self) {
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u2`
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let u2 = User {
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_u2`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `u1`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:102:29
[INFO] [stdout]     |
[INFO] [stdout] 96  |       let u2 = User {
[INFO] [stdout]     |  ______________-
[INFO] [stdout] 97  | |         first: String::from("Mary"),
[INFO] [stdout] 98  | |         ..u1
[INFO] [stdout] 99  | |         
[INFO] [stdout] 100 | |     };
[INFO] [stdout]     | |_____- value partially moved here
[INFO] [stdout] 101 |
[INFO] [stdout] 102 |       println!("user: {:#?}", u1);
[INFO] [stdout]     |                               ^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because `u1.last` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]     = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `moved`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_moved`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `moved_field`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val;
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_moved_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Foo>`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:125:17
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |                 ^^^^^^^ move occurs because value has type `Foo`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Foo` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:108:1
[INFO] [stdout]     |
[INFO] [stdout] 108 | struct Foo {
[INFO] [stdout]     | ^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout] ...
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |                 ------- you could clone this value
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = &foos[0];
[INFO] [stdout]     |                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Foo>`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^ move occurs because value has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = &foos[0].str_val;
[INFO] [stdout]     |                       +
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val.clone();
[INFO] [stdout]     |                                      ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:199:13
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[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] error[E0369]: binary operation `==` cannot be applied to type `structs::Person`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         assert_eq!(p, p_expectation);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         structs::Person
[INFO] [stdout]     |         structs::Person
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `structs::Person`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:5:1
[INFO] [stdout]     |
[INFO] [stdout] 5   | struct Person {
[INFO] [stdout]     | ^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `structs::Person` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 5   + #[derive(PartialEq)]
[INFO] [stdout] 6   | struct Person {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `structs::Person` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         assert_eq!(p, p_expectation);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `structs::Person` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `structs::Person`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `structs::Person` or manually `impl Debug for structs::Person`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `structs::Person` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 5   + #[derive(Debug)]
[INFO] [stdout] 6   | struct Person {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `structs::Person` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |         assert_eq!(p, p_expectation);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `structs::Person` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `structs::Person`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `structs::Person` or manually `impl Debug for structs::Person`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `structs::Person` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 5   + #[derive(Debug)]
[INFO] [stdout] 6   | struct Person {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 |     s += "!".to_string();
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^ expected `&str`, found `String`
[INFO] [stdout]    |
[INFO] [stdout] help: try removing the method call
[INFO] [stdout]    |
[INFO] [stdout] 13 -     s += "!".to_string();
[INFO] [stdout] 13 +     s += "!";
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[INFO] [stdout]     |             -------------- move occurs because `calculator` has type `Calculator`, which does not implement the `Copy` trait
[INFO] [stdout] 200 |         calculator.add(5);
[INFO] [stdout] 201 |         assert_eq!(calculator.get_value(), 5);
[INFO] [stdout]     |                               ----------- `calculator` moved due to this method call
[INFO] [stdout] 202 |
[INFO] [stdout] 203 |         calculator.subtract(2);
[INFO] [stdout]     |         ^^^^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `Calculator::get_value` takes ownership of the receiver `self`, which moves `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:75:18
[INFO] [stdout]     |
[INFO] [stdout] 75  |     fn get_value(self) -> i32 {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:204:20
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[INFO] [stdout]     |             -------------- move occurs because `calculator` has type `Calculator`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 203 |         calculator.subtract(2);
[INFO] [stdout]     |                    ----------- `calculator` moved due to this method call
[INFO] [stdout] 204 |         assert_eq!(calculator.get_value(), 3);
[INFO] [stdout]     |                    ^^^^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `Calculator::subtract` takes ownership of the receiver `self`, which moves `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:68:21
[INFO] [stdout]     |
[INFO] [stdout] 68  |     fn subtract(mut self, num: i32) {
[INFO] [stdout]     |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[INFO] [stdout]     |             -------------- move occurs because `calculator` has type `Calculator`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 204 |         assert_eq!(calculator.get_value(), 3);
[INFO] [stdout]     |                               ----------- `calculator` moved due to this method call
[INFO] [stdout] 205 |
[INFO] [stdout] 206 |         calculator.clear();
[INFO] [stdout]     |         ^^^^^^^^^^ value used here after move
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:207:20
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[INFO] [stdout]     |             -------------- move occurs because `calculator` has type `Calculator`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 206 |         calculator.clear();
[INFO] [stdout]     |                    ------- `calculator` moved due to this method call
[INFO] [stdout] 207 |         assert_eq!(calculator.get_value(), 0);
[INFO] [stdout]     |                    ^^^^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `Calculator::clear` takes ownership of the receiver `self`, which moves `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:71:14
[INFO] [stdout]     |
[INFO] [stdout] 71  |     fn clear(self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0369, E0382, E0507, E0594, E0599.
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let s3 = s1 + s2;
[INFO] [stdout]    |                   ^^ expected `&str`, found `String`
[INFO] [stdout]    |
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let s3 = s1 + &s2;
[INFO] [stdout]    |                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> exercises/traits/src/lib.rs:81:23
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn static_dispatch<T>(x: T) {}
[INFO] [stdout]    |                       ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]  --> exercises/basic-of-rust/src/strings.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn exercise1(color: &str) -> String {
[INFO] [stdout]   |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:28:19
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn reverse_string(input: &str) -> String {
[INFO] [stdout]    |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn is_palindrome(word: &str) -> bool {
[INFO] [stdout]    |                  ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `string`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:41:27
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn count_char_occurrences(string: &str, ch: char) -> usize {
[INFO] [stdout]    |                           ^^^^^^ help: if this is intentional, prefix it with an underscore: `_string`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ch`
[INFO] [stdout]   --> exercises/basic-of-rust/src/strings.rs:41:41
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn count_char_occurrences(string: &str, ch: char) -> usize {
[INFO] [stdout]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_ch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `Rust-Bootcamp-2023` (test "structs") due to 17 previous errors; 4 warnings emitted
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_international` found for struct `structs::Package` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:230:25
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Package {
[INFO] [stdout]     | -------------- method `is_international` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 230 |         assert!(package.is_international());
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^ method not found in `Package`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_international` found for struct `structs::Package` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:241:26
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Package {
[INFO] [stdout]     | -------------- method `is_international` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 241 |         assert!(!package.is_international());
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^ method not found in `Package`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `Rust-Bootcamp-2023` (test "strings") due to 3 previous errors; 5 warnings emitted
[INFO] [stdout] error[E0599]: no method named `get_fees` found for struct `structs::Package` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:253:28
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Package {
[INFO] [stdout]     | -------------- method `get_fees` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 253 |         assert_eq!(package.get_fees(cents_per_gram), 4500);
[INFO] [stdout]     |                            ^^^^^^^^ method not found in `Package`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_fees` found for struct `structs::Package` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:254:28
[INFO] [stdout]     |
[INFO] [stdout] 137 | struct Package {
[INFO] [stdout]     | -------------- method `get_fees` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 254 |         assert_eq!(package.get_fees(cents_per_gram * 2), 9000);
[INFO] [stdout]     |                            ^^^^^^^^ method not found in `Package`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `MessageOne` doesn't implement `std::fmt::Display`
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 |     println!("{}", msg);
[INFO] [stdout]    |                    ^^^ `MessageOne` cannot be formatted with the default formatter
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `std::fmt::Display` is not implemented for `MessageOne`
[INFO] [stdout]    = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
[INFO] [stdout]    = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `ChangeColor` found for enum `enums::Message` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:120:32
[INFO] [stdout]     |
[INFO] [stdout] 30  | enum Message {
[INFO] [stdout]     | ------------ variant or associated item `ChangeColor` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 120 |         state.process(Message::ChangeColor(255, 0, 255));
[INFO] [stdout]     |                                ^^^^^^^^^^^ variant or associated item not found in `Message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Echo` found for enum `enums::Message` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:121:32
[INFO] [stdout]     |
[INFO] [stdout] 30  | enum Message {
[INFO] [stdout]     | ------------ variant or associated item `Echo` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 121 |         state.process(Message::Echo(String::from("hello world")));
[INFO] [stdout]     |                                ^^^^ variant or associated item not found in `Message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Move` found for enum `enums::Message` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:122:32
[INFO] [stdout]     |
[INFO] [stdout] 30  | enum Message {
[INFO] [stdout]     | ------------ variant or associated item `Move` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 122 |         state.process(Message::Move(Point { x: 10, y: 15 }));
[INFO] [stdout]     |                                ^^^^ variant or associated item not found in `Message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Quit` found for enum `enums::Message` in the current scope
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:123:32
[INFO] [stdout]     |
[INFO] [stdout] 30  | enum Message {
[INFO] [stdout]     | ------------ variant or associated item `Quit` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 123 |         state.process(Message::Quit);
[INFO] [stdout]     |                                ^^^^ variant or associated item not found in `Message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `enums::Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         assert_eq!(Direction::North.opposite(), Direction::South);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         enums::Direction
[INFO] [stdout]     |         enums::Direction
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `enums::Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout] 72  | enum Direction {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(PartialEq)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `enums::Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         assert_eq!(Direction::North.opposite(), Direction::South);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `enums::Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `enums::Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `enums::Direction` or manually `impl Debug for enums::Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `enums::Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:135:9
[INFO] [stdout]     |
[INFO] [stdout] 135 |         assert_eq!(Direction::North.opposite(), Direction::South);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `enums::Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `enums::Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `enums::Direction` or manually `impl Debug for enums::Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `enums::Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         assert_eq!(Direction::East.opposite(), Direction::West);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         enums::Direction
[INFO] [stdout]     |         enums::Direction
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `enums::Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout] 72  | enum Direction {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(PartialEq)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `enums::Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         assert_eq!(Direction::East.opposite(), Direction::West);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `enums::Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `enums::Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `enums::Direction` or manually `impl Debug for enums::Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `enums::Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:136:9
[INFO] [stdout]     |
[INFO] [stdout] 136 |         assert_eq!(Direction::East.opposite(), Direction::West);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `enums::Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `enums::Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `enums::Direction` or manually `impl Debug for enums::Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `enums::Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |         assert_eq!(Direction::South.opposite(), Direction::North);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         enums::Direction
[INFO] [stdout]     |         enums::Direction
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `enums::Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout] 72  | enum Direction {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(PartialEq)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `enums::Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |         assert_eq!(Direction::South.opposite(), Direction::North);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `enums::Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `enums::Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `enums::Direction` or manually `impl Debug for enums::Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `enums::Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |         assert_eq!(Direction::South.opposite(), Direction::North);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `enums::Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `enums::Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `enums::Direction` or manually `impl Debug for enums::Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `enums::Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         assert_eq!(Direction::West.opposite(), Direction::East);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         enums::Direction
[INFO] [stdout]     |         enums::Direction
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `enums::Direction`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:72:1
[INFO] [stdout]     |
[INFO] [stdout] 72  | enum Direction {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(PartialEq)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(PartialEq)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `enums::Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         assert_eq!(Direction::West.opposite(), Direction::East);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `enums::Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `enums::Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `enums::Direction` or manually `impl Debug for enums::Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `enums::Direction` doesn't implement `Debug`
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |         assert_eq!(Direction::West.opposite(), Direction::East);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `enums::Direction` cannot be formatted using `{:?}`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Debug` is not implemented for `enums::Direction`
[INFO] [stdout]     = note: add `#[derive(Debug)]` to `enums::Direction` or manually `impl Debug for enums::Direction`
[INFO] [stdout]     = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] help: consider annotating `enums::Direction` with `#[derive(Debug)]`
[INFO] [stdout]     |
[INFO] [stdout] 72  + #[derive(Debug)]
[INFO] [stdout] 73  | enum Direction {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `self.value`, which is behind a `&` reference
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |         self.value += num;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ `self` is a `&` reference, so the data it refers to cannot be written
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing this to be a mutable reference
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn add(&mut self, num: i32) {
[INFO] [stdout]    |             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0594]: cannot assign to `self.value`, as `self` is not declared as mutable
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         self.value = 0;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ cannot assign
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing this to be mutable
[INFO] [stdout]    |
[INFO] [stdout] 71 |     fn clear(mut self) {
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u2`
[INFO] [stdout]   --> exercises/complex-type/src/structs.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let u2 = User {
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_u2`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `u1`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:102:29
[INFO] [stdout]     |
[INFO] [stdout] 96  |       let u2 = User {
[INFO] [stdout]     |  ______________-
[INFO] [stdout] 97  | |         first: String::from("Mary"),
[INFO] [stdout] 98  | |         ..u1
[INFO] [stdout] 99  | |         
[INFO] [stdout] 100 | |     };
[INFO] [stdout]     | |_____- value partially moved here
[INFO] [stdout] 101 |
[INFO] [stdout] 102 |       println!("user: {:#?}", u1);
[INFO] [stdout]     |                               ^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because `u1.last` has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]     = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `moved`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_moved`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `moved_field`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val;
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_moved_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Foo>`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:125:17
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |                 ^^^^^^^ move occurs because value has type `Foo`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Foo` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:108:1
[INFO] [stdout]     |
[INFO] [stdout] 108 | struct Foo {
[INFO] [stdout]     | ^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout] ...
[INFO] [stdout] 125 |     let moved = foos[0];
[INFO] [stdout]     |                 ------- you could clone this value
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 125 |     let moved = &foos[0];
[INFO] [stdout]     |                 +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Foo>`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^ move occurs because value has type `String`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = &foos[0].str_val;
[INFO] [stdout]     |                       +
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 128 |     let moved_field = foos[0].str_val.clone();
[INFO] [stdout]     |                                      ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:199:13
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[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] error[E0382]: use of moved value: `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[INFO] [stdout]     |             -------------- move occurs because `calculator` has type `structs::Calculator`, which does not implement the `Copy` trait
[INFO] [stdout] 200 |         calculator.add(5);
[INFO] [stdout] 201 |         assert_eq!(calculator.get_value(), 5);
[INFO] [stdout]     |                               ----------- `calculator` moved due to this method call
[INFO] [stdout] 202 |
[INFO] [stdout] 203 |         calculator.subtract(2);
[INFO] [stdout]     |         ^^^^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `structs::Calculator::get_value` takes ownership of the receiver `self`, which moves `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:75:18
[INFO] [stdout]     |
[INFO] [stdout] 75  |     fn get_value(self) -> i32 {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:204:20
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[INFO] [stdout]     |             -------------- move occurs because `calculator` has type `structs::Calculator`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 203 |         calculator.subtract(2);
[INFO] [stdout]     |                    ----------- `calculator` moved due to this method call
[INFO] [stdout] 204 |         assert_eq!(calculator.get_value(), 3);
[INFO] [stdout]     |                    ^^^^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `structs::Calculator::subtract` takes ownership of the receiver `self`, which moves `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:68:21
[INFO] [stdout]     |
[INFO] [stdout] 68  |     fn subtract(mut self, num: i32) {
[INFO] [stdout]     |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:206:9
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[INFO] [stdout]     |             -------------- move occurs because `calculator` has type `structs::Calculator`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 204 |         assert_eq!(calculator.get_value(), 3);
[INFO] [stdout]     |                               ----------- `calculator` moved due to this method call
[INFO] [stdout] 205 |
[INFO] [stdout] 206 |         calculator.clear();
[INFO] [stdout]     |         ^^^^^^^^^^ value used here after move
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:207:20
[INFO] [stdout]     |
[INFO] [stdout] 199 |         let mut calculator = Calculator::new();
[INFO] [stdout]     |             -------------- move occurs because `calculator` has type `structs::Calculator`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 206 |         calculator.clear();
[INFO] [stdout]     |                    ------- `calculator` moved due to this method call
[INFO] [stdout] 207 |         assert_eq!(calculator.get_value(), 0);
[INFO] [stdout]     |                    ^^^^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] note: `structs::Calculator::clear` takes ownership of the receiver `self`, which moves `calculator`
[INFO] [stdout]    --> exercises/complex-type/src/structs.rs:71:14
[INFO] [stdout]     |
[INFO] [stdout] 71  |     fn clear(self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:62:27
[INFO] [stdout]    |
[INFO] [stdout] 62 |     fn process(&mut self, message: Message) {
[INFO] [stdout]    |                           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: type `&enums::Direction` is non-empty
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:81:15
[INFO] [stdout]    |
[INFO] [stdout] 81 |         match self {
[INFO] [stdout]    |               ^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: `enums::Direction` defined here
[INFO] [stdout]   --> exercises/complex-type/src/enums.rs:72:6
[INFO] [stdout]    |
[INFO] [stdout] 72 | enum Direction {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout]    = note: the matched value is of type `&enums::Direction`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
[INFO] [stdout]    |
[INFO] [stdout] 81 ~         match self {
[INFO] [stdout] 82 +             _ => todo!(),
[INFO] [stdout] 83 +         }
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0004]: non-exhaustive patterns: `enums::Operation::Add`, `enums::Operation::Subtract`, `enums::Operation::Multiply` and 1 more not covered
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 |     match operation {
[INFO] [stdout]     |           ^^^^^^^^^ patterns `enums::Operation::Add`, `enums::Operation::Subtract`, `enums::Operation::Multiply` and 1 more not covered
[INFO] [stdout]     |
[INFO] [stdout] note: `enums::Operation` defined here
[INFO] [stdout]    --> exercises/complex-type/src/enums.rs:92:6
[INFO] [stdout]     |
[INFO] [stdout] 92  | enum Operation {
[INFO] [stdout]     |      ^^^^^^^^^
[INFO] [stdout] 93  |     Add,
[INFO] [stdout]     |     --- not covered
[INFO] [stdout] 94  |     Subtract,
[INFO] [stdout]     |     -------- not covered
[INFO] [stdout] 95  |     Multiply,
[INFO] [stdout]     |     -------- not covered
[INFO] [stdout] 96  |     Divide,
[INFO] [stdout]     |     ------ not covered
[INFO] [stdout]     = note: the matched value is of type `enums::Operation`
[INFO] [stdout] help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown, or multiple match arms
[INFO] [stdout]     |
[INFO] [stdout] 101 ~     match operation {
[INFO] [stdout] 102 +         _ => todo!(),
[INFO] [stdout] 103 +     }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0004, E0277, E0369, E0382, E0412, E0507, E0594, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0004`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `complex-type` (lib test) due to 37 previous errors; 5 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "f4177d861cf3101e428642fca57fffba37db38fce9e6f023c56fbd25e94ea6f5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f4177d861cf3101e428642fca57fffba37db38fce9e6f023c56fbd25e94ea6f5", kill_on_drop: false }`
[INFO] [stdout] f4177d861cf3101e428642fca57fffba37db38fce9e6f023c56fbd25e94ea6f5
