[INFO] cloning repository https://github.com/esdras-santos/data_structures_rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/esdras-santos/data_structures_rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fesdras-santos%2Fdata_structures_rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fesdras-santos%2Fdata_structures_rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cd0cf05dc09efb7051973e1080b99e896cba9ea2
[INFO] checking esdras-santos/data_structures_rust against 011c518242557d21690f7936b5812318dc2fec47 for pr-159877
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fesdras-santos%2Fdata_structures_rust" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/esdras-santos/data_structures_rust
[INFO] finished tweaking git repo https://github.com/esdras-santos/data_structures_rust
[INFO] tweaked toml for git repo https://github.com/esdras-santos/data_structures_rust written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/esdras-santos/data_structures_rust on toolchain 011c518242557d21690f7936b5812318dc2fec47
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/esdras-santos/data_structures_rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "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
[ERROR] error running command: no output for 300 seconds
[INFO] checking esdras-santos/data_structures_rust against 011c518242557d21690f7936b5812318dc2fec47 for pr-159877
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fesdras-santos%2Fdata_structures_rust" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/esdras-santos/data_structures_rust
[INFO] finished tweaking git repo https://github.com/esdras-santos/data_structures_rust
[INFO] tweaked toml for git repo https://github.com/esdras-santos/data_structures_rust written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/esdras-santos/data_structures_rust on toolchain 011c518242557d21690f7936b5812318dc2fec47
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/esdras-santos/data_structures_rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "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-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:1fa6594d87c8fa7b311925a7a77a16f539833322d9dfba4ce891f211db2f90b1" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02
[INFO] running `Command { std: "docker" "start" "4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02" "/opt/rustwide/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02" "/opt/rustwide/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking data_structures v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]   --> src/structures/priority_queue.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 90 |         while true{
[INFO] [stdout]    |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]   --> src/structures/priority_queue.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 90 |         while true{
[INFO] [stdout]    |         ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap`
[INFO] [stdout]   --> src/structures/priority_queue.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |             let heap: Vec<T> = Vec::with_capacity(elems.as_ref().unwrap().len());
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_heap`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `heap`
[INFO] [stdout]   --> src/structures/priority_queue.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |             let heap: Vec<T> = Vec::with_capacity(elems.as_ref().unwrap().len());
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_heap`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/structures/union_find.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 |             let mut next = self.id[p as usize];
[INFO] [stdout]    |                 ----^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/structures/union_find.rs:33:17
[INFO] [stdout]    |
[INFO] [stdout] 33 |             let mut next = self.id[p as usize];
[INFO] [stdout]    |                 ----^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0505]: cannot move out of `self.root` because it is borrowed
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:37:39
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn add(&mut self, elem: T) -> bool{
[INFO] [stdout]    |                --------- binding `self` declared here
[INFO] [stdout] ...
[INFO] [stdout] 37 |             self.root = self.add_node(self.root ,elem);
[INFO] [stdout]    |                         ---- -------- ^^^^^^^^^ move out of `self.root` occurs here
[INFO] [stdout]    |                         |    |
[INFO] [stdout]    |                         |    borrow later used by call
[INFO] [stdout]    |                         borrow of `*self` occurs here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0505]: cannot move out of `self.root` because it is borrowed
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:37:39
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn add(&mut self, elem: T) -> bool{
[INFO] [stdout]    |                --------- binding `self` declared here
[INFO] [stdout] ...
[INFO] [stdout] 37 |             self.root = self.add_node(self.root ,elem);
[INFO] [stdout]    |                         ---- -------- ^^^^^^^^^ move out of `self.root` occurs here
[INFO] [stdout]    |                         |    |
[INFO] [stdout]    |                         |    borrow later used by call
[INFO] [stdout]    |                         borrow of `*self` occurs here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.root` which is behind a mutable reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:37:39
[INFO] [stdout]    |
[INFO] [stdout] 37 |             self.root = self.add_node(self.root ,elem);
[INFO] [stdout]    |                                       ^^^^^^^^^ move occurs because `self.root` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 37 |             self.root = self.add_node(self.root.clone() ,elem);
[INFO] [stdout]    |                                                ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.root` which is behind a mutable reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:37:39
[INFO] [stdout]    |
[INFO] [stdout] 37 |             self.root = self.add_node(self.root ,elem);
[INFO] [stdout]    |                                       ^^^^^^^^^ move occurs because `self.root` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 37 |             self.root = self.add_node(self.root.clone() ,elem);
[INFO] [stdout]    |                                                ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:49:21
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let mut parent = *node.unwrap().left.unwrap();
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:52:21
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut parent = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:49:21
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let mut parent = *node.unwrap().left.unwrap();
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:52:21
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut parent = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `node`
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:50:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn add_node(&self, mut node: Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout]    |                        -------- move occurs because `node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 49 |                 let mut parent = *node.unwrap().left.unwrap();
[INFO] [stdout]    |                                        -------- `node` moved due to this method call
[INFO] [stdout] 50 |                 node.unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                 ^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let mut parent = *node.as_ref().unwrap().left.unwrap();
[INFO] [stdout]    |                                       +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let mut parent = *node.as_mut().unwrap().left.unwrap();
[INFO] [stdout]    |                                       +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let mut parent = *node.clone().unwrap().left.unwrap();
[INFO] [stdout]    |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `node`
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:50:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn add_node(&self, mut node: Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout]    |                        -------- move occurs because `node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 49 |                 let mut parent = *node.unwrap().left.unwrap();
[INFO] [stdout]    |                                        -------- `node` moved due to this method call
[INFO] [stdout] 50 |                 node.unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                 ^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let mut parent = *node.as_ref().unwrap().left.unwrap();
[INFO] [stdout]    |                                       +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let mut parent = *node.as_mut().unwrap().left.unwrap();
[INFO] [stdout]    |                                       +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let mut parent = *node.clone().unwrap().left.unwrap();
[INFO] [stdout]    |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `node`
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:52:35
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn add_node(&self, mut node: Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout]    |                        -------- move occurs because `node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 48 |             if elem < node.unwrap().data.unwrap(){
[INFO] [stdout]    |                            -------- `node` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 52 |                 let mut parent = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                                   ^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: `Option::<T>::unwrap` takes ownership of the receiver `self`, which moves `node`
[INFO] [stdout]   --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/option.rs:1011:24
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 48 |             if elem < node.as_ref().unwrap().data.unwrap(){
[INFO] [stdout]    |                           +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 48 |             if elem < node.as_mut().unwrap().data.unwrap(){
[INFO] [stdout]    |                           +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 48 |             if elem < node.clone().unwrap().data.unwrap(){
[INFO] [stdout]    |                           ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `node`
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:52:35
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn add_node(&self, mut node: Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout]    |                        -------- move occurs because `node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 48 |             if elem < node.unwrap().data.unwrap(){
[INFO] [stdout]    |                            -------- `node` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 52 |                 let mut parent = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                                   ^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] note: `Option::<T>::unwrap` takes ownership of the receiver `self`, which moves `node`
[INFO] [stdout]   --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/option.rs:1011:24
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 48 |             if elem < node.as_ref().unwrap().data.unwrap(){
[INFO] [stdout]    |                           +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 48 |             if elem < node.as_mut().unwrap().data.unwrap(){
[INFO] [stdout]    |                           +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 48 |             if elem < node.clone().unwrap().data.unwrap(){
[INFO] [stdout]    |                           ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `node`
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:53:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn add_node(&self, mut node: Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout]    |                        -------- move occurs because `node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 52 |                 let mut parent = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                                        -------- `node` moved due to this method call
[INFO] [stdout] 53 |                 node.unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                 ^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut parent = *node.as_ref().unwrap().right.unwrap();
[INFO] [stdout]    |                                       +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut parent = *node.as_mut().unwrap().right.unwrap();
[INFO] [stdout]    |                                       +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut parent = *node.clone().unwrap().right.unwrap();
[INFO] [stdout]    |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `node`
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:53:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn add_node(&self, mut node: Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout]    |                        -------- move occurs because `node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 52 |                 let mut parent = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                                        -------- `node` moved due to this method call
[INFO] [stdout] 53 |                 node.unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                 ^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut parent = *node.as_ref().unwrap().right.unwrap();
[INFO] [stdout]    |                                       +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut parent = *node.as_mut().unwrap().right.unwrap();
[INFO] [stdout]    |                                       +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 52 |                 let mut parent = *node.clone().unwrap().right.unwrap();
[INFO] [stdout]    |                                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `node`
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn add_node(&self, mut node: Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout]    |                        -------- move occurs because `node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 50 |                 node.unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                      -------- `node` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 53 |                 node.unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                      -------- `node` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 57 |         node
[INFO] [stdout]    |         ^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 node.as_ref().unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 node.as_mut().unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 node.clone().unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 50 |                 node.as_ref().unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 50 |                 node.as_mut().unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 50 |                 node.clone().unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `node`
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn add_node(&self, mut node: Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout]    |                        -------- move occurs because `node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 50 |                 node.unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                      -------- `node` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 53 |                 node.unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                      -------- `node` moved due to this method call
[INFO] [stdout] ...
[INFO] [stdout] 57 |         node
[INFO] [stdout]    |         ^^^^ value used here after move
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 node.as_ref().unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 node.as_mut().unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 node.clone().unwrap().right = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 50 |                 node.as_ref().unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 50 |                 node.as_mut().unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: you can `clone` the value and consume it, but this might not be your desired behavior
[INFO] [stdout]    |
[INFO] [stdout] 50 |                 node.clone().unwrap().left = Some(Box::new(self.add_node(Some(parent), elem).unwrap()))
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.root` which is behind a mutable reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:62:23
[INFO] [stdout]    |
[INFO] [stdout] 62 |             let aux = self.root.unwrap();
[INFO] [stdout]    |                       ^^^^^^^^^ -------- `self.root` moved due to this method call
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       move occurs because `self.root` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Option::<T>::unwrap` takes ownership of the receiver `self`, which moves `self.root`
[INFO] [stdout]   --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/option.rs:1011:24
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 62 |             let aux = self.root.as_ref().unwrap();
[INFO] [stdout]    |                                +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 62 |             let aux = self.root.as_mut().unwrap();
[INFO] [stdout]    |                                +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 62 |             let aux = self.root.clone().unwrap();
[INFO] [stdout]    |                                ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `self.root` which is behind a mutable reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:62:23
[INFO] [stdout]    |
[INFO] [stdout] 62 |             let aux = self.root.unwrap();
[INFO] [stdout]    |                       ^^^^^^^^^ -------- `self.root` moved due to this method call
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       move occurs because `self.root` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Option::<T>::unwrap` takes ownership of the receiver `self`, which moves `self.root`
[INFO] [stdout]   --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/option.rs:1011:24
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 62 |             let aux = self.root.as_ref().unwrap();
[INFO] [stdout]    |                                +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 62 |             let aux = self.root.as_mut().unwrap();
[INFO] [stdout]    |                                +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 62 |             let aux = self.root.clone().unwrap();
[INFO] [stdout]    |                                ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:75:19
[INFO] [stdout]    |
[INFO] [stdout] 75 |         if elem < node.unwrap().data.unwrap(){
[INFO] [stdout]    |                   ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Option::<T>::unwrap` takes ownership of the receiver `self`, which moves `*node`
[INFO] [stdout]   --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/option.rs:1011:24
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 75 |         if elem < node.as_ref().unwrap().data.unwrap(){
[INFO] [stdout]    |                       +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 75 |         if elem < node.as_mut().unwrap().data.unwrap(){
[INFO] [stdout]    |                       +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 75 |         if elem < node.clone().unwrap().data.unwrap(){
[INFO] [stdout]    |                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:76:24
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let aux = *node.unwrap().left.unwrap();
[INFO] [stdout]    |                        ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let aux = *node.as_ref().unwrap().left.unwrap();
[INFO] [stdout]    |                            +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let aux = *node.as_mut().unwrap().left.unwrap();
[INFO] [stdout]    |                            +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let aux = *node.clone().unwrap().left.unwrap();
[INFO] [stdout]    |                            ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:75:19
[INFO] [stdout]    |
[INFO] [stdout] 75 |         if elem < node.unwrap().data.unwrap(){
[INFO] [stdout]    |                   ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                   |
[INFO] [stdout]    |                   move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: `Option::<T>::unwrap` takes ownership of the receiver `self`, which moves `*node`
[INFO] [stdout]   --> /rustc/011c518242557d21690f7936b5812318dc2fec47/library/core/src/option.rs:1011:24
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 75 |         if elem < node.as_ref().unwrap().data.unwrap(){
[INFO] [stdout]    |                       +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 75 |         if elem < node.as_mut().unwrap().data.unwrap(){
[INFO] [stdout]    |                       +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 75 |         if elem < node.clone().unwrap().data.unwrap(){
[INFO] [stdout]    |                       ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:77:13
[INFO] [stdout]    |
[INFO] [stdout] 77 |             node.unwrap().left = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |             ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |             |
[INFO] [stdout]    |             move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 77 |             node.as_ref().unwrap().left = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 77 |             node.as_mut().unwrap().left = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 77 |             node.clone().unwrap().left = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:76:24
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let aux = *node.unwrap().left.unwrap();
[INFO] [stdout]    |                        ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let aux = *node.as_ref().unwrap().left.unwrap();
[INFO] [stdout]    |                            +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let aux = *node.as_mut().unwrap().left.unwrap();
[INFO] [stdout]    |                            +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let aux = *node.clone().unwrap().left.unwrap();
[INFO] [stdout]    |                            ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:78:26
[INFO] [stdout]    |
[INFO] [stdout] 78 |         } else if elem > node.unwrap().data.unwrap(){
[INFO] [stdout]    |                          ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 78 |         } else if elem > node.as_ref().unwrap().data.unwrap(){
[INFO] [stdout]    |                              +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 78 |         } else if elem > node.as_mut().unwrap().data.unwrap(){
[INFO] [stdout]    |                              +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 78 |         } else if elem > node.clone().unwrap().data.unwrap(){
[INFO] [stdout]    |                              ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:77:13
[INFO] [stdout]    |
[INFO] [stdout] 77 |             node.unwrap().left = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |             ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |             |
[INFO] [stdout]    |             move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 77 |             node.as_ref().unwrap().left = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 77 |             node.as_mut().unwrap().left = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 77 |             node.clone().unwrap().left = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:78:26
[INFO] [stdout]    |
[INFO] [stdout] 78 |         } else if elem > node.unwrap().data.unwrap(){
[INFO] [stdout]    |                          ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 78 |         } else if elem > node.as_ref().unwrap().data.unwrap(){
[INFO] [stdout]    |                              +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 78 |         } else if elem > node.as_mut().unwrap().data.unwrap(){
[INFO] [stdout]    |                              +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 78 |         } else if elem > node.clone().unwrap().data.unwrap(){
[INFO] [stdout]    |                              ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:79:24
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let aux = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                        ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let aux = *node.as_ref().unwrap().right.unwrap();
[INFO] [stdout]    |                            +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let aux = *node.as_mut().unwrap().right.unwrap();
[INFO] [stdout]    |                            +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let aux = *node.clone().unwrap().right.unwrap();
[INFO] [stdout]    |                            ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:79:24
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let aux = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                        ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let aux = *node.as_ref().unwrap().right.unwrap();
[INFO] [stdout]    |                            +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let aux = *node.as_mut().unwrap().right.unwrap();
[INFO] [stdout]    |                            +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 79 |             let aux = *node.clone().unwrap().right.unwrap();
[INFO] [stdout]    |                            ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |             node.unwrap().right = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |             ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |             |
[INFO] [stdout]    |             move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 80 |             node.as_ref().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 80 |             node.as_mut().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 80 |             node.clone().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |             node.unwrap().right = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |             ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |             |
[INFO] [stdout]    |             move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 80 |             node.as_ref().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 80 |             node.as_mut().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 80 |             node.clone().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), elem).unwrap()));
[INFO] [stdout]    |                 ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:82:16
[INFO] [stdout]    |
[INFO] [stdout] 82 |             if node.unwrap().left.is_none(){
[INFO] [stdout]    |                ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                |
[INFO] [stdout]    |                move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 82 |             if node.as_ref().unwrap().left.is_none(){
[INFO] [stdout]    |                    +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 82 |             if node.as_mut().unwrap().left.is_none(){
[INFO] [stdout]    |                    +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 82 |             if node.clone().unwrap().left.is_none(){
[INFO] [stdout]    |                    ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:82:16
[INFO] [stdout]    |
[INFO] [stdout] 82 |             if node.unwrap().left.is_none(){
[INFO] [stdout]    |                ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                |
[INFO] [stdout]    |                move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 82 |             if node.as_ref().unwrap().left.is_none(){
[INFO] [stdout]    |                    +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 82 |             if node.as_mut().unwrap().left.is_none(){
[INFO] [stdout]    |                    +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 82 |             if node.clone().unwrap().left.is_none(){
[INFO] [stdout]    |                    ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:83:30
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let right = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                              ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                              |
[INFO] [stdout]    |                              move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let right = *node.as_ref().unwrap().right.unwrap();
[INFO] [stdout]    |                                  +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let right = *node.as_mut().unwrap().right.unwrap();
[INFO] [stdout]    |                                  +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let right = *node.clone().unwrap().right.unwrap();
[INFO] [stdout]    |                                  ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:83:30
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let right = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                              ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                              |
[INFO] [stdout]    |                              move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let right = *node.as_ref().unwrap().right.unwrap();
[INFO] [stdout]    |                                  +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let right = *node.as_mut().unwrap().right.unwrap();
[INFO] [stdout]    |                                  +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let right = *node.clone().unwrap().right.unwrap();
[INFO] [stdout]    |                                  ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:84:17
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 node.unwrap().data = None;
[INFO] [stdout]    |                 ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 node.as_ref().unwrap().data = None;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 node.as_mut().unwrap().data = None;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 node.clone().unwrap().data = None;
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:84:17
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 node.unwrap().data = None;
[INFO] [stdout]    |                 ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 node.as_ref().unwrap().data = None;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 node.as_mut().unwrap().data = None;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 node.clone().unwrap().data = None;
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:87:23
[INFO] [stdout]    |
[INFO] [stdout] 87 |             } else if node.unwrap().right.is_none(){
[INFO] [stdout]    |                       ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 87 |             } else if node.as_ref().unwrap().right.is_none(){
[INFO] [stdout]    |                           +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 87 |             } else if node.as_mut().unwrap().right.is_none(){
[INFO] [stdout]    |                           +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 87 |             } else if node.clone().unwrap().right.is_none(){
[INFO] [stdout]    |                           ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:87:23
[INFO] [stdout]    |
[INFO] [stdout] 87 |             } else if node.unwrap().right.is_none(){
[INFO] [stdout]    |                       ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 87 |             } else if node.as_ref().unwrap().right.is_none(){
[INFO] [stdout]    |                           +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 87 |             } else if node.as_mut().unwrap().right.is_none(){
[INFO] [stdout]    |                           +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 87 |             } else if node.clone().unwrap().right.is_none(){
[INFO] [stdout]    |                           ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:88:29
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 let left = *node.unwrap().left.unwrap();
[INFO] [stdout]    |                             ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 let left = *node.as_ref().unwrap().left.unwrap();
[INFO] [stdout]    |                                 +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 let left = *node.as_mut().unwrap().left.unwrap();
[INFO] [stdout]    |                                 +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 let left = *node.clone().unwrap().left.unwrap();
[INFO] [stdout]    |                                 ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:88:29
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 let left = *node.unwrap().left.unwrap();
[INFO] [stdout]    |                             ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 let left = *node.as_ref().unwrap().left.unwrap();
[INFO] [stdout]    |                                 +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 let left = *node.as_mut().unwrap().left.unwrap();
[INFO] [stdout]    |                                 +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 88 |                 let left = *node.clone().unwrap().left.unwrap();
[INFO] [stdout]    |                                 ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 node.unwrap().data = None;
[INFO] [stdout]    |                 ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 node.as_ref().unwrap().data = None;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 node.as_mut().unwrap().data = None;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 node.clone().unwrap().data = None;
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 node.unwrap().data = None;
[INFO] [stdout]    |                 ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 node.as_ref().unwrap().data = None;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 node.as_mut().unwrap().data = None;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 89 |                 node.clone().unwrap().data = None;
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:93:42
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let tmp = self.dig_left(*node.unwrap().right.unwrap());
[INFO] [stdout]    |                                          ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let tmp = self.dig_left(*node.as_ref().unwrap().right.unwrap());
[INFO] [stdout]    |                                              +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let tmp = self.dig_left(*node.as_mut().unwrap().right.unwrap());
[INFO] [stdout]    |                                              +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let tmp = self.dig_left(*node.clone().unwrap().right.unwrap());
[INFO] [stdout]    |                                              ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:93:42
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let tmp = self.dig_left(*node.unwrap().right.unwrap());
[INFO] [stdout]    |                                          ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let tmp = self.dig_left(*node.as_ref().unwrap().right.unwrap());
[INFO] [stdout]    |                                              +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let tmp = self.dig_left(*node.as_mut().unwrap().right.unwrap());
[INFO] [stdout]    |                                              +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 93 |                 let tmp = self.dig_left(*node.clone().unwrap().right.unwrap());
[INFO] [stdout]    |                                              ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:94:28
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let aux = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                            ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let aux = *node.as_ref().unwrap().right.unwrap();
[INFO] [stdout]    |                                +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let aux = *node.as_mut().unwrap().right.unwrap();
[INFO] [stdout]    |                                +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let aux = *node.clone().unwrap().right.unwrap();
[INFO] [stdout]    |                                ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:94:28
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let aux = *node.unwrap().right.unwrap();
[INFO] [stdout]    |                            ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let aux = *node.as_ref().unwrap().right.unwrap();
[INFO] [stdout]    |                                +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let aux = *node.as_mut().unwrap().right.unwrap();
[INFO] [stdout]    |                                +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 94 |                 let aux = *node.clone().unwrap().right.unwrap();
[INFO] [stdout]    |                                ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 node.unwrap().data = tmp.data;
[INFO] [stdout]    |                 ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 node.as_ref().unwrap().data = tmp.data;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 node.as_mut().unwrap().data = tmp.data;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 node.clone().unwrap().data = tmp.data;
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:95:17
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 node.unwrap().data = tmp.data;
[INFO] [stdout]    |                 ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 node.as_ref().unwrap().data = tmp.data;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 node.as_mut().unwrap().data = tmp.data;
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 95 |                 node.clone().unwrap().data = tmp.data;
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:96:17
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 node.unwrap().right = Some(Box::new(self.remove_node(&Some(aux), tmp.data.unwrap()).unwrap()));
[INFO] [stdout]    |                 ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 node.as_ref().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), tmp.data.unwrap()).unwrap()));
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 node.as_mut().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), tmp.data.unwrap()).unwrap()));
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 node.clone().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), tmp.data.unwrap()).unwrap()));
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of `*node` which is behind a shared reference
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:96:17
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 node.unwrap().right = Some(Box::new(self.remove_node(&Some(aux), tmp.data.unwrap()).unwrap()));
[INFO] [stdout]    |                 ^^^^ -------- `*node` moved due to this method call
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 move occurs because `*node` has type `Option<Node<T>>`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider calling `.as_ref()` to borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 node.as_ref().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), tmp.data.unwrap()).unwrap()));
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider calling `.as_mut()` to mutably borrow the value's contents
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 node.as_mut().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), tmp.data.unwrap()).unwrap()));
[INFO] [stdout]    |                     +++++++++
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 node.clone().unwrap().right = Some(Box::new(self.remove_node(&Some(aux), tmp.data.unwrap()).unwrap()));
[INFO] [stdout]    |                     ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `node` is never read
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 node = &None;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: you might have meant to mutate the pointed at value being passed in, instead of changing the reference in the local binding
[INFO] [stdout]    |
[INFO] [stdout] 70 ~     fn remove_node(&mut self, node: &mut Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout] 71 |         if node.is_none(){
[INFO] [stdout] ...
[INFO] [stdout] 89 |                 node.unwrap().data = None;
[INFO] [stdout] 90 ~                 *node = None;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `node` is never read
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |                 node = &None;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: you might have meant to mutate the pointed at value being passed in, instead of changing the reference in the local binding
[INFO] [stdout]    |
[INFO] [stdout] 70 ~     fn remove_node(&mut self, node: &mut Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout] 71 |         if node.is_none(){
[INFO] [stdout] ...
[INFO] [stdout] 89 |                 node.unwrap().data = None;
[INFO] [stdout] 90 ~                 *node = None;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `node` is never read
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |                 node = &None;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to mutate the pointed at value being passed in, instead of changing the reference in the local binding
[INFO] [stdout]    |
[INFO] [stdout] 70 ~     fn remove_node(&mut self, node: &mut Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout] 71 |         if node.is_none(){
[INFO] [stdout] ...
[INFO] [stdout] 84 |                 node.unwrap().data = None;
[INFO] [stdout] 85 ~                 *node = None;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `node` is never read
[INFO] [stdout]   --> src/structures/binary_search_tree.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |                 node = &None;
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to mutate the pointed at value being passed in, instead of changing the reference in the local binding
[INFO] [stdout]    |
[INFO] [stdout] 70 ~     fn remove_node(&mut self, node: &mut Option<Node<T>>, elem: T) -> Option<Node<T>>{
[INFO] [stdout] 71 |         if node.is_none(){
[INFO] [stdout] ...
[INFO] [stdout] 84 |                 node.unwrap().data = None;
[INFO] [stdout] 85 ~                 *node = None;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0382, E0505, E0507.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0382`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0382, E0505, E0507.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0382`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `data_structures` (bin "data_structures" test) due to 23 previous errors; 7 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `data_structures` (bin "data_structures") due to 23 previous errors; 7 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02", kill_on_drop: false }`
[INFO] [stdout] 4f1e75975117ca18fc1455cf26bece3296cbd1cb3d852bfbd7ad9a349a120c02
