[INFO] cloning repository https://github.com/AlvinKuruvilla/PhotoXMP [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AlvinKuruvilla/PhotoXMP" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlvinKuruvilla%2FPhotoXMP", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlvinKuruvilla%2FPhotoXMP'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] d12a5a588e683b2a192fe5f9426b768a0d731ff1 [INFO] checking AlvinKuruvilla/PhotoXMP/d12a5a588e683b2a192fe5f9426b768a0d731ff1 against master#f609b7e0586f81fefb3523e3e17adf779ac416be for pr-129466-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlvinKuruvilla%2FPhotoXMP" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/AlvinKuruvilla/PhotoXMP on toolchain f609b7e0586f81fefb3523e3e17adf779ac416be [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/AlvinKuruvilla/PhotoXMP [INFO] finished tweaking git repo https://github.com/AlvinKuruvilla/PhotoXMP [INFO] tweaked toml for git repo https://github.com/AlvinKuruvilla/PhotoXMP written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 1 package to latest compatible version [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 387b978d9978b8d1b52dbfc15c732a81483934da6bba96ba1bd385ae44ee9daa [INFO] running `Command { std: "docker" "start" "-a" "387b978d9978b8d1b52dbfc15c732a81483934da6bba96ba1bd385ae44ee9daa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "387b978d9978b8d1b52dbfc15c732a81483934da6bba96ba1bd385ae44ee9daa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "387b978d9978b8d1b52dbfc15c732a81483934da6bba96ba1bd385ae44ee9daa", kill_on_drop: false }` [INFO] [stdout] 387b978d9978b8d1b52dbfc15c732a81483934da6bba96ba1bd385ae44ee9daa [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 07408fb62b185ef1eaf2a559654e4ab326e11132b7ead87623bb36ea1fe1c7d9 [INFO] running `Command { std: "docker" "start" "-a" "07408fb62b185ef1eaf2a559654e4ab326e11132b7ead87623bb36ea1fe1c7d9", kill_on_drop: false }` [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Checking photo_xmp v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `BufRead` and `Read` [INFO] [stdout] --> src/Utils.rs:7:33 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::{BufWriter, Write, BufRead, Read}; [INFO] [stdout] | ^^^^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BufRead` and `Read` [INFO] [stdout] --> src/Utils.rs:7:33 [INFO] [stdout] | [INFO] [stdout] 7 | use std::io::{BufWriter, Write, BufRead, Read}; [INFO] [stdout] | ^^^^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/lib.rs:93:10 [INFO] [stdout] | [INFO] [stdout] 86 | return false; [INFO] [stdout] | ------------ any code following this expression is unreachable [INFO] [stdout] ... [INFO] [stdout] 93 | / while img_file_path.exists() && xmp_file_path.exists() { [INFO] [stdout] 94 | | return true; [INFO] [stdout] 95 | | } [INFO] [stdout] | |___________^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/lib.rs:93:10 [INFO] [stdout] | [INFO] [stdout] 86 | return false; [INFO] [stdout] | ------------ any code following this expression is unreachable [INFO] [stdout] ... [INFO] [stdout] 93 | / while img_file_path.exists() && xmp_file_path.exists() { [INFO] [stdout] 94 | | return true; [INFO] [stdout] 95 | | } [INFO] [stdout] | |___________^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/lib.rs:93:10 [INFO] [stdout] | [INFO] [stdout] 76 | pub fn retrieve_data(folder: String, start_name: String) -> bool { [INFO] [stdout] | ---- expected `bool` because of return type [INFO] [stdout] ... [INFO] [stdout] 93 | / while img_file_path.exists() && xmp_file_path.exists() { [INFO] [stdout] 94 | | return true; [INFO] [stdout] 95 | | } [INFO] [stdout] | |___________^ expected `bool`, found `()` [INFO] [stdout] | [INFO] [stdout] = note: `while` loops evaluate to unit type `()` [INFO] [stdout] help: consider returning a value here [INFO] [stdout] | [INFO] [stdout] 95 ~ } [INFO] [stdout] 96 + /* `bool` value */ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0308]: mismatched types [INFO] [stdout] --> src/lib.rs:93:10 [INFO] [stdout] | [INFO] [stdout] 76 | pub fn retrieve_data(folder: String, start_name: String) -> bool { [INFO] [stdout] | ---- expected `bool` because of return type [INFO] [stdout] ... [INFO] [stdout] 93 | / while img_file_path.exists() && xmp_file_path.exists() { [INFO] [stdout] 94 | | return true; [INFO] [stdout] 95 | | } [INFO] [stdout] | |___________^ expected `bool`, found `()` [INFO] [stdout] | [INFO] [stdout] = note: `while` loops evaluate to unit type `()` [INFO] [stdout] help: consider returning a value here [INFO] [stdout] | [INFO] [stdout] 95 ~ } [INFO] [stdout] 96 + /* `bool` value */ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `increments` [INFO] [stdout] --> src/Exposure.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | let increments = self.expo/tmp; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_increments` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `increments` [INFO] [stdout] --> src/Exposure.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | let increments = self.expo/tmp; [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_increments` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `images` [INFO] [stdout] --> src/Change.rs:16:23 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_images` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `images` [INFO] [stdout] --> src/Change.rs:16:23 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_images` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sln` [INFO] [stdout] --> src/Change.rs:16:43 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_sln` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pln` [INFO] [stdout] --> src/Change.rs:16:53 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_pln` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/Change.rs:16:63 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sln` [INFO] [stdout] --> src/Change.rs:16:43 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_sln` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/Change.rs:16:75 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `pln` [INFO] [stdout] --> src/Change.rs:16:53 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_pln` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> src/Change.rs:16:63 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `end` [INFO] [stdout] --> src/Change.rs:16:75 [INFO] [stdout] | [INFO] [stdout] 16 | pub fn create_new(images: Vec, sln: i32, pln: i32, start: i32, end: i32) -> Change { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_end` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `tmp` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/Change.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | let tmp = self.image_queue.iter(); [INFO] [stdout] | ^^^ not mutable [INFO] [stdout] ... [INFO] [stdout] 43 | t = tmp.next().unwrap().to_owned(); [INFO] [stdout] | --- cannot borrow as mutable [INFO] [stdout] ... [INFO] [stdout] 48 | let curr = tmp.nth(a.try_into().unwrap()).unwrap(); [INFO] [stdout] | --- cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 39 | let mut tmp = self.image_queue.iter(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `tmp` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/Change.rs:39:13 [INFO] [stdout] | [INFO] [stdout] 39 | let tmp = self.image_queue.iter(); [INFO] [stdout] | ^^^ not mutable [INFO] [stdout] ... [INFO] [stdout] 43 | t = tmp.next().unwrap().to_owned(); [INFO] [stdout] | --- cannot borrow as mutable [INFO] [stdout] ... [INFO] [stdout] 48 | let curr = tmp.nth(a.try_into().unwrap()).unwrap(); [INFO] [stdout] | --- cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 39 | let mut tmp = self.image_queue.iter(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0384]: cannot assign twice to immutable variable `t` [INFO] [stdout] --> src/Change.rs:43:14 [INFO] [stdout] | [INFO] [stdout] 43 | t = tmp.next().unwrap().to_owned(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign twice to immutable variable [INFO] [stdout] | [INFO] [stdout] help: consider making this binding mutable [INFO] [stdout] | [INFO] [stdout] 41 | let mut t: &Image; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0384]: cannot assign twice to immutable variable `t` [INFO] [stdout] --> src/Change.rs:43:14 [INFO] [stdout] | [INFO] [stdout] 43 | t = tmp.next().unwrap().to_owned(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot assign twice to immutable variable [INFO] [stdout] | [INFO] [stdout] help: consider making this binding mutable [INFO] [stdout] | [INFO] [stdout] 41 | let mut t: &Image; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0381]: used binding `t` is possibly-uninitialized [INFO] [stdout] --> src/Change.rs:45:32 [INFO] [stdout] | [INFO] [stdout] 41 | let t: &Image; [INFO] [stdout] | - binding declared here but left uninitialized [INFO] [stdout] 42 | while i < self.sln { [INFO] [stdout] | ------------ if this condition isn't met and the `while` loop runs 0 times, `t` is not initialized [INFO] [stdout] ... [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key); [INFO] [stdout] | ^ `*t` used here but it is possibly-uninitialized [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0381]: used binding `t` is possibly-uninitialized [INFO] [stdout] --> src/Change.rs:45:32 [INFO] [stdout] | [INFO] [stdout] 41 | let t: &Image; [INFO] [stdout] | - binding declared here but left uninitialized [INFO] [stdout] 42 | while i < self.sln { [INFO] [stdout] | ------------ if this condition isn't met and the `while` loop runs 0 times, `t` is not initialized [INFO] [stdout] ... [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key); [INFO] [stdout] | ^ `*t` used here but it is possibly-uninitialized [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*t` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:45:32 [INFO] [stdout] | [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key); [INFO] [stdout] | ^ --------- `*t` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*t` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Image::get_xmp` takes ownership of the receiver `self`, which moves `*t` [INFO] [stdout] --> src/lib.rs:160:20 [INFO] [stdout] | [INFO] [stdout] 160 | pub fn get_xmp(self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:45:32 [INFO] [stdout] | [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key); [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*t` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:45:32 [INFO] [stdout] | [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key); [INFO] [stdout] | ^ --------- `*t` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*t` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Image::get_xmp` takes ownership of the receiver `self`, which moves `*t` [INFO] [stdout] --> src/lib.rs:160:20 [INFO] [stdout] | [INFO] [stdout] 160 | pub fn get_xmp(self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:45:32 [INFO] [stdout] | [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key); [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*curr` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:49:24 [INFO] [stdout] | [INFO] [stdout] 49 | let file = curr.get_xmp().unwrap(); [INFO] [stdout] | ^^^^ --------- `*curr` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*curr` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:49:24 [INFO] [stdout] | [INFO] [stdout] 49 | let file = curr.get_xmp().unwrap(); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*curr` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:49:24 [INFO] [stdout] | [INFO] [stdout] 49 | let file = curr.get_xmp().unwrap(); [INFO] [stdout] | ^^^^ --------- `*curr` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*curr` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:49:24 [INFO] [stdout] | [INFO] [stdout] 49 | let file = curr.get_xmp().unwrap(); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `key` [INFO] [stdout] --> src/Change.rs:51:48 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn update_metadata(self, key: String) { [INFO] [stdout] | --- move occurs because `key` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key); [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 51 | let new_data = Util::replace(file, key, new_val.try_into().unwrap()); [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `find` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> src/Utils.rs:53:36 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn find(path: String, key: String) -> String { [INFO] [stdout] | ---- in this method ^^^^^^ this parameter takes ownership of the value [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key.clone()); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `key` [INFO] [stdout] --> src/Change.rs:51:48 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn update_metadata(self, key: String) { [INFO] [stdout] | --- move occurs because `key` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key); [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 51 | let new_data = Util::replace(file, key, new_val.try_into().unwrap()); [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `find` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> src/Utils.rs:53:36 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn find(path: String, key: String) -> String { [INFO] [stdout] | ---- in this method ^^^^^^ this parameter takes ownership of the value [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 45 | let start = Util::find(t.get_xmp().unwrap(), key.clone()); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `key` [INFO] [stdout] --> src/Change.rs:53:16 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn update_metadata(self, key: String) { [INFO] [stdout] | --- move occurs because `key` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 47 | while a < self.eln { [INFO] [stdout] | ------------------ inside of this loop [INFO] [stdout] ... [INFO] [stdout] 51 | let new_data = Util::replace(file, key, new_val.try_into().unwrap()); [INFO] [stdout] | --- value moved here [INFO] [stdout] 52 | [INFO] [stdout] 53 | if key == "Exposure" { [INFO] [stdout] | ^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `replace` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> src/Utils.rs:72:39 [INFO] [stdout] | [INFO] [stdout] 72 | pub fn replace(path: String, key: String, replace: u64)-> String { [INFO] [stdout] | ------- in this method ^^^^^^ this parameter takes ownership of the value [INFO] [stdout] help: consider moving the expression out of the loop so it is only moved once [INFO] [stdout] | [INFO] [stdout] 47 ~ let mut value = Util::replace(file, key, new_val.try_into().unwrap()); [INFO] [stdout] 48 ~ while a < self.eln { [INFO] [stdout] 49 | let curr = tmp.nth(a.try_into().unwrap()).unwrap(); [INFO] [stdout] 50 | let file = curr.get_xmp().unwrap(); [INFO] [stdout] 51 | let new_val: i32 = start.parse::().unwrap() + (self.increments * (a - self.sln)); [INFO] [stdout] 52 ~ let new_data = value; [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 51 | let new_data = Util::replace(file, key.clone(), new_val.try_into().unwrap()); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `key` [INFO] [stdout] --> src/Change.rs:53:16 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn update_metadata(self, key: String) { [INFO] [stdout] | --- move occurs because `key` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 47 | while a < self.eln { [INFO] [stdout] | ------------------ inside of this loop [INFO] [stdout] ... [INFO] [stdout] 51 | let new_data = Util::replace(file, key, new_val.try_into().unwrap()); [INFO] [stdout] | --- value moved here [INFO] [stdout] 52 | [INFO] [stdout] 53 | if key == "Exposure" { [INFO] [stdout] | ^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `replace` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> src/Utils.rs:72:39 [INFO] [stdout] | [INFO] [stdout] 72 | pub fn replace(path: String, key: String, replace: u64)-> String { [INFO] [stdout] | ------- in this method ^^^^^^ this parameter takes ownership of the value [INFO] [stdout] help: consider moving the expression out of the loop so it is only moved once [INFO] [stdout] | [INFO] [stdout] 47 ~ let mut value = Util::replace(file, key, new_val.try_into().unwrap()); [INFO] [stdout] 48 ~ while a < self.eln { [INFO] [stdout] 49 | let curr = tmp.nth(a.try_into().unwrap()).unwrap(); [INFO] [stdout] 50 | let file = curr.get_xmp().unwrap(); [INFO] [stdout] 51 | let new_val: i32 = start.parse::().unwrap() + (self.increments * (a - self.sln)); [INFO] [stdout] 52 ~ let new_data = value; [INFO] [stdout] | [INFO] [stdout] help: consider cloning the value if the performance cost is acceptable [INFO] [stdout] | [INFO] [stdout] 51 | let new_data = Util::replace(file, key.clone(), new_val.try_into().unwrap()); [INFO] [stdout] | ++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*t` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:54:43 [INFO] [stdout] | [INFO] [stdout] 54 | let exposure = Util::find(t.get_xmp().unwrap(), "Exposure2012".to_string()); [INFO] [stdout] | ^ --------- `*t` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*t` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:54:43 [INFO] [stdout] | [INFO] [stdout] 54 | let exposure = Util::find(t.get_xmp().unwrap(), "Exposure2012".to_string()); [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*curr` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | curr.set_exposure(e); [INFO] [stdout] | ^^^^ --------------- `*curr` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*curr` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Image::set_exposure` takes ownership of the receiver `self`, which moves `*curr` [INFO] [stdout] --> src/lib.rs:188:25 [INFO] [stdout] | [INFO] [stdout] 188 | pub fn set_exposure(self, e: u64) { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | curr.set_exposure(e); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*t` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:54:43 [INFO] [stdout] | [INFO] [stdout] 54 | let exposure = Util::find(t.get_xmp().unwrap(), "Exposure2012".to_string()); [INFO] [stdout] | ^ --------- `*t` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*t` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:54:43 [INFO] [stdout] | [INFO] [stdout] 54 | let exposure = Util::find(t.get_xmp().unwrap(), "Exposure2012".to_string()); [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*t` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:60:48 [INFO] [stdout] | [INFO] [stdout] 60 | let white_balance = Util::find(t.get_xmp().unwrap(), "Temperature".to_string()); [INFO] [stdout] | ^ --------- `*t` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*t` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:60:48 [INFO] [stdout] | [INFO] [stdout] 60 | let white_balance = Util::find(t.get_xmp().unwrap(), "Temperature".to_string()); [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*curr` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | curr.set_exposure(e); [INFO] [stdout] | ^^^^ --------------- `*curr` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*curr` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Image::set_exposure` takes ownership of the receiver `self`, which moves `*curr` [INFO] [stdout] --> src/lib.rs:188:25 [INFO] [stdout] | [INFO] [stdout] 188 | pub fn set_exposure(self, e: u64) { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:56:17 [INFO] [stdout] | [INFO] [stdout] 56 | curr.set_exposure(e); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*curr` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:62:17 [INFO] [stdout] | [INFO] [stdout] 62 | curr.set_white_balance(w); [INFO] [stdout] | ^^^^ -------------------- `*curr` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*curr` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Image::set_white_balance` takes ownership of the receiver `self`, which moves `*curr` [INFO] [stdout] --> src/lib.rs:191:30 [INFO] [stdout] | [INFO] [stdout] 191 | pub fn set_white_balance(self, w: u32) { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:62:17 [INFO] [stdout] | [INFO] [stdout] 62 | curr.set_white_balance(w); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*t` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:60:48 [INFO] [stdout] | [INFO] [stdout] 60 | let white_balance = Util::find(t.get_xmp().unwrap(), "Temperature".to_string()); [INFO] [stdout] | ^ --------- `*t` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*t` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:60:48 [INFO] [stdout] | [INFO] [stdout] 60 | let white_balance = Util::find(t.get_xmp().unwrap(), "Temperature".to_string()); [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/Utils.rs:16:13 [INFO] [stdout] | [INFO] [stdout] 16 | let mut file = File::create(i.get_xmp().unwrap()).expect("Unable to create requested file"); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/Utils.rs:23:13 [INFO] [stdout] | [INFO] [stdout] 23 | let mut file = File::create(i.get_xmp().unwrap()).expect("Unable to create requested file"); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*curr` which is behind a shared reference [INFO] [stdout] --> src/Change.rs:62:17 [INFO] [stdout] | [INFO] [stdout] 62 | curr.set_white_balance(w); [INFO] [stdout] | ^^^^ -------------------- `*curr` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*curr` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Image::set_white_balance` takes ownership of the receiver `self`, which moves `*curr` [INFO] [stdout] --> src/lib.rs:191:30 [INFO] [stdout] | [INFO] [stdout] 191 | pub fn set_white_balance(self, w: u32) { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Change.rs:62:17 [INFO] [stdout] | [INFO] [stdout] 62 | curr.set_white_balance(w); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/Utils.rs:16:13 [INFO] [stdout] | [INFO] [stdout] 16 | let mut file = File::create(i.get_xmp().unwrap()).expect("Unable to create requested file"); [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[E0507]: cannot move out of `*i` which is behind a shared reference [INFO] [stdout] --> src/Utils.rs:23:37 [INFO] [stdout] | [INFO] [stdout] 23 | let mut file = File::create(i.get_xmp().unwrap()).expect("Unable to create requested file"); [INFO] [stdout] | ^ --------- `*i` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*i` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Image::get_xmp` takes ownership of the receiver `self`, which moves `*i` [INFO] [stdout] --> src/lib.rs:160:20 [INFO] [stdout] | [INFO] [stdout] 160 | pub fn get_xmp(self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Utils.rs:23:37 [INFO] [stdout] | [INFO] [stdout] 23 | let mut file = File::create(i.get_xmp().unwrap()).expect("Unable to create requested file"); [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/Utils.rs:23:13 [INFO] [stdout] | [INFO] [stdout] 23 | let mut file = File::create(i.get_xmp().unwrap()).expect("Unable to create requested file"); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*i` which is behind a shared reference [INFO] [stdout] --> src/Utils.rs:23:37 [INFO] [stdout] | [INFO] [stdout] 23 | let mut file = File::create(i.get_xmp().unwrap()).expect("Unable to create requested file"); [INFO] [stdout] | ^ --------- `*i` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*i` has type `Image`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `Image::get_xmp` takes ownership of the receiver `self`, which moves `*i` [INFO] [stdout] --> src/lib.rs:160:20 [INFO] [stdout] | [INFO] [stdout] 160 | pub fn get_xmp(self) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `Image` implemented `Clone`, you could clone the value [INFO] [stdout] --> src/lib.rs:101:1 [INFO] [stdout] | [INFO] [stdout] 101 | pub struct Image { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: src/Utils.rs:23:37 [INFO] [stdout] | [INFO] [stdout] 23 | let mut file = File::create(i.get_xmp().unwrap()).expect("Unable to create requested file"); [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/Utils.rs:96:71 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn create_value(path:String, pre_key:String, replace:&String, value:String) -> String [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/Utils.rs:96:71 [INFO] [stdout] | [INFO] [stdout] 96 | pub fn create_value(path:String, pre_key:String, replace:&String, value:String) -> String [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `folder` [INFO] [stdout] --> src/lib.rs:44:27 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn get_next_image(folder: String, curr_image: Image) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_folder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `folder` [INFO] [stdout] --> src/lib.rs:44:27 [INFO] [stdout] | [INFO] [stdout] 44 | pub fn get_next_image(folder: String, curr_image: Image) { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_folder` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lib.rs:55:25 [INFO] [stdout] | [INFO] [stdout] 55 | let mut j = count; [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `extension` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/lib.rs:59:25 [INFO] [stdout] | [INFO] [stdout] 59 | extension.push_str(s_slice); [INFO] [stdout] | ^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 48 | let mut extension = String::new(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `string_num` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/lib.rs:66:17 [INFO] [stdout] | [INFO] [stdout] 66 | string_num.push_str(s); [INFO] [stdout] | ^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 49 | let mut string_num = String::new(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lib.rs:55:25 [INFO] [stdout] | [INFO] [stdout] 55 | let mut j = count; [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `pre_num` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/lib.rs:71:17 [INFO] [stdout] | [INFO] [stdout] 71 | pre_num.push_str(b); [INFO] [stdout] | ^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 47 | let mut pre_num = String::new(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `extension` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/lib.rs:59:25 [INFO] [stdout] | [INFO] [stdout] 59 | extension.push_str(s_slice); [INFO] [stdout] | ^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 48 | let mut extension = String::new(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `string_num` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/lib.rs:66:17 [INFO] [stdout] | [INFO] [stdout] 66 | string_num.push_str(s); [INFO] [stdout] | ^^^^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 49 | let mut string_num = String::new(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0596]: cannot borrow `pre_num` as mutable, as it is not declared as mutable [INFO] [stdout] --> src/lib.rs:71:17 [INFO] [stdout] | [INFO] [stdout] 71 | pre_num.push_str(b); [INFO] [stdout] | ^^^^^^^ cannot borrow as mutable [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 47 | let mut pre_num = String::new(); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `image_path` [INFO] [stdout] --> src/lib.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | image_path: String, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_image_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `image_path` [INFO] [stdout] --> src/lib.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | image_path: String, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_image_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `xmp_path` [INFO] [stdout] --> src/lib.rs:135:58 [INFO] [stdout] | [INFO] [stdout] 116 | xmp_path: String, [INFO] [stdout] | -------- move occurs because `xmp_path` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 133 | xmp_path, [INFO] [stdout] | -------- value moved here [INFO] [stdout] 134 | exposure, [INFO] [stdout] 135 | image_path: String::from(&Util::get_XMP_name(&xmp_path)), [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] 133 | xmp_path: xmp_path.clone(), [INFO] [stdout] | ++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `xmp_path` [INFO] [stdout] --> src/lib.rs:135:58 [INFO] [stdout] | [INFO] [stdout] 116 | xmp_path: String, [INFO] [stdout] | -------- move occurs because `xmp_path` has type `String`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 133 | xmp_path, [INFO] [stdout] | -------- value moved here [INFO] [stdout] 134 | exposure, [INFO] [stdout] 135 | image_path: String::from(&Util::get_XMP_name(&xmp_path)), [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] 133 | xmp_path: xmp_path.clone(), [INFO] [stdout] | ++++++++++++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0594]: cannot assign to `self.exposure`, as `self` is not declared as mutable [INFO] [stdout] --> src/lib.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | self.exposure = e; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ cannot assign [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 188 | pub fn set_exposure(mut self, e: u64) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0594]: cannot assign to `self.white_balance`, as `self` is not declared as mutable [INFO] [stdout] --> src/lib.rs:192:9 [INFO] [stdout] | [INFO] [stdout] 192 | self.white_balance = w; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ cannot assign [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 191 | pub fn set_white_balance(mut self, w: u32) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0594]: cannot assign to `self.exposure`, as `self` is not declared as mutable [INFO] [stdout] --> src/lib.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | self.exposure = e; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ cannot assign [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 188 | pub fn set_exposure(mut self, e: u64) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0594]: cannot assign to `self.white_balance`, as `self` is not declared as mutable [INFO] [stdout] --> src/lib.rs:192:9 [INFO] [stdout] | [INFO] [stdout] 192 | self.white_balance = w; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ cannot assign [INFO] [stdout] | [INFO] [stdout] help: consider changing this to be mutable [INFO] [stdout] | [INFO] [stdout] 191 | pub fn set_white_balance(mut self, w: u32) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 19 previous errors; 14 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0308, E0381, E0382, E0384, E0507, E0594, E0596. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0308`. [INFO] [stdout] [INFO] [stdout] error: aborting due to 19 previous errors; 14 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0308, E0381, E0382, E0384, E0507, E0594, E0596. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0308`. [INFO] [stdout] [INFO] [stderr] error: could not compile `photo_xmp` (lib test) due to 20 previous errors; 14 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: could not compile `photo_xmp` (lib) due to 20 previous errors; 14 warnings emitted [INFO] running `Command { std: "docker" "inspect" "07408fb62b185ef1eaf2a559654e4ab326e11132b7ead87623bb36ea1fe1c7d9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "07408fb62b185ef1eaf2a559654e4ab326e11132b7ead87623bb36ea1fe1c7d9", kill_on_drop: false }` [INFO] [stdout] 07408fb62b185ef1eaf2a559654e4ab326e11132b7ead87623bb36ea1fe1c7d9