[INFO] fetching crate shamir_file_secret_sharing 1.0.0...
[INFO] testing shamir_file_secret_sharing-1.0.0 against 1.90.0 for beta-1.91-3
[INFO] extracting crate shamir_file_secret_sharing 1.0.0 into /workspace/builds/worker-4-tc1/source
[INFO] started tweaking crates.io crate shamir_file_secret_sharing 1.0.0
[INFO] finished tweaking crates.io crate shamir_file_secret_sharing 1.0.0
[INFO] tweaked toml for crates.io crate shamir_file_secret_sharing 1.0.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate shamir_file_secret_sharing 1.0.0 on toolchain 1.90.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.90.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate shamir_file_secret_sharing 1.0.0 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" "+1.90.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded uuid v0.8.2
[INFO] [stderr]   Downloaded structopt-derive v0.4.18
[INFO] [stderr]   Downloaded structopt v0.3.26
[INFO] [stderr]   Downloaded heck v0.3.3
[INFO] [stderr]   Downloaded unicode-ident v1.0.5
[INFO] [stderr]   Downloaded proc-macro2 v1.0.47
[INFO] [stderr]   Downloaded getrandom v0.2.8
[INFO] [stderr]   Downloaded serde v1.0.148
[INFO] [stderr]   Downloaded unicode-segmentation v1.10.0
[INFO] [stderr]   Downloaded syn v1.0.105
[INFO] [stderr]   Downloaded libc v0.2.137
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 30d29df0bcf955d13e91c75bcd68033c0ceb3f7a744e3c7de275606346413107
[INFO] running `Command { std: "docker" "start" "-a" "30d29df0bcf955d13e91c75bcd68033c0ceb3f7a744e3c7de275606346413107", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "30d29df0bcf955d13e91c75bcd68033c0ceb3f7a744e3c7de275606346413107", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "30d29df0bcf955d13e91c75bcd68033c0ceb3f7a744e3c7de275606346413107", kill_on_drop: false }`
[INFO] [stdout] 30d29df0bcf955d13e91c75bcd68033c0ceb3f7a744e3c7de275606346413107
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+1.90.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9873bfd92338e8abc3097ef1c670f9a439be56eb5b7d1fe5ad5a4b90b9ecb9a6
[INFO] running `Command { std: "docker" "start" "-a" "9873bfd92338e8abc3097ef1c670f9a439be56eb5b7d1fe5ad5a4b90b9ecb9a6", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.47
[INFO] [stderr]    Compiling unicode-ident v1.0.5
[INFO] [stderr]    Compiling libc v0.2.137
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling syn v1.0.105
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling serde v1.0.148
[INFO] [stderr]    Compiling unicode-segmentation v1.10.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.17
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling clap v2.34.0
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]    Compiling getrandom v0.2.8
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling quote v1.0.21
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling uuid v0.8.2
[INFO] [stderr]    Compiling structopt-derive v0.4.18
[INFO] [stderr]    Compiling structopt v0.3.26
[INFO] [stderr]    Compiling shamir_file_secret_sharing v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0557]: feature has been removed
[INFO] [stdout]   --> src/main.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | #![feature(const_eval_limit)]
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^ feature has been removed
[INFO] [stdout]    |
[INFO] [stdout]    = note: removed in 1.72.0; see <https://github.com/rust-lang/rust/pull/103877> for more information
[INFO] [stdout]    = note: removed the limit entirely
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `const_eval_limit` in this scope
[INFO] [stdout]   --> src/main.rs:32:4
[INFO] [stdout]    |
[INFO] [stdout] 32 | #![const_eval_limit = "0"]
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `structopt` in this scope
[INFO] [stdout]   --> src/main.rs:64:7
[INFO] [stdout]    |
[INFO] [stdout] 64 |     #[structopt(name = "share")]
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `structopt` is in scope, but it is a crate, not an attribute
[INFO] [stdout] help: `structopt` is an attribute that can be used by the derive macro `StructOpt`, you might be missing a `derive` attribute
[INFO] [stdout]    |
[INFO] [stdout] 63 + #[derive(StructOpt)]
[INFO] [stdout] 64 | enum ShamirMainCommand {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `structopt` in this scope
[INFO] [stdout]   --> src/main.rs:68:7
[INFO] [stdout]    |
[INFO] [stdout] 68 |     #[structopt(name = "recover")]
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `structopt` is in scope, but it is a crate, not an attribute
[INFO] [stdout] help: `structopt` is an attribute that can be used by the derive macro `StructOpt`, you might be missing a `derive` attribute
[INFO] [stdout]    |
[INFO] [stdout] 63 + #[derive(StructOpt)]
[INFO] [stdout] 64 | enum ShamirMainCommand {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the stable release channel
[INFO] [stdout]   --> src/main.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | #![feature(const_eval_limit)]
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0554]: `#![feature]` may not be used on the stable release channel
[INFO] [stdout]   --> src/main.rs:31:1
[INFO] [stdout]    |
[INFO] [stdout] 31 | #![feature(test)]
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Element: Copy` is not satisfied
[INFO] [stdout]    --> src/galois_field_256.rs:276:34
[INFO] [stdout]     |
[INFO] [stdout] 276 |         let mut all_products = [[Self::new(0); 256]; 256];
[INFO] [stdout]     |                                  ^^^^^^^^^^^^ the trait `Copy` is not implemented for `Element`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the `Copy` trait is required because this value will be copied for each element of the array
[INFO] [stdout] help: consider annotating `Element` with `#[derive(Copy)]`
[INFO] [stdout]     |
[INFO] [stdout]  94 + #[derive(Copy)]
[INFO] [stdout]  95 | pub struct Element(u8);
[INFO] [stdout]     |
[INFO] [stdout] help: create an inline `const` block
[INFO] [stdout]     |
[INFO] [stdout] 276 |         let mut all_products = [[const { Self::new(0) }; 256]; 256];
[INFO] [stdout]     |                                  +++++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Element: Copy` is not satisfied
[INFO] [stdout]    --> src/galois_field_256.rs:323:33
[INFO] [stdout]     |
[INFO] [stdout] 323 |         let mut all_inverses = [None; 256];
[INFO] [stdout]     |                                 ^^^^ the trait `Copy` is not implemented for `Element`
[INFO] [stdout]     |
[INFO] [stdout]     = note: required for `Option<Element>` to implement `Copy`
[INFO] [stdout]     = note: the `Copy` trait is required because this value will be copied for each element of the array
[INFO] [stdout] help: consider annotating `Element` with `#[derive(Copy)]`
[INFO] [stdout]     |
[INFO] [stdout]  94 + #[derive(Copy)]
[INFO] [stdout]  95 | pub struct Element(u8);
[INFO] [stdout]     |
[INFO] [stdout] help: create an inline `const` block
[INFO] [stdout]     |
[INFO] [stdout] 323 |         let mut all_inverses = [const { None }; 256];
[INFO] [stdout]     |                                 +++++++      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Element: Copy` is not satisfied
[INFO] [stdout]    --> src/galois_field_256.rs:349:32
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut all_powers = [[Self::new(0); 256]; 256];
[INFO] [stdout]     |                                ^^^^^^^^^^^^ the trait `Copy` is not implemented for `Element`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the `Copy` trait is required because this value will be copied for each element of the array
[INFO] [stdout] help: consider annotating `Element` with `#[derive(Copy)]`
[INFO] [stdout]     |
[INFO] [stdout]  94 + #[derive(Copy)]
[INFO] [stdout]  95 | pub struct Element(u8);
[INFO] [stdout]     |
[INFO] [stdout] help: create an inline `const` block
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut all_powers = [[const { Self::new(0) }; 256]; 256];
[INFO] [stdout]     |                                +++++++              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `clone` exists for struct `Vec<Element>`, but its trait bounds were not satisfied
[INFO] [stdout]   --> src/polynomials.rs:39:32
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 self.0 = rhs.0.clone();
[INFO] [stdout]    |                                ^^^^^ method cannot be called on `Vec<Element>` due to unsatisfied trait bounds
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/galois_field_256.rs:94:1
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub struct Element(u8);
[INFO] [stdout]    | ------------------ doesn't satisfy `Element: Clone`
[INFO] [stdout]    |
[INFO] [stdout]    = note: the following trait bounds were not satisfied:
[INFO] [stdout]            `Element: Clone`
[INFO] [stdout]            which is required by `Vec<Element>: Clone`
[INFO] [stdout] help: consider annotating `Element` with `#[derive(Clone)]`
[INFO] [stdout]   --> src/galois_field_256.rs:94:1
[INFO] [stdout]    |
[INFO] [stdout] 94 + #[derive(Clone)]
[INFO] [stdout] 95 | pub struct Element(u8);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `resize` exists for struct `Vec<Element>`, but its trait bounds were not satisfied
[INFO] [stdout]   --> src/polynomials.rs:44:28
[INFO] [stdout]    |
[INFO] [stdout] 44 |                     self.0.resize(rhs_degree + 1, Elt::new(0));
[INFO] [stdout]    |                            ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/galois_field_256.rs:94:1
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub struct Element(u8);
[INFO] [stdout]    | ------------------ doesn't satisfy `Element: Clone`
[INFO] [stdout]    |
[INFO] [stdout]    = note: the following trait bounds were not satisfied:
[INFO] [stdout]            `Element: Clone`
[INFO] [stdout] help: consider annotating `Element` with `#[derive(Clone)]`
[INFO] [stdout]   --> src/galois_field_256.rs:94:1
[INFO] [stdout]    |
[INFO] [stdout] 94 + #[derive(Clone)]
[INFO] [stdout] 95 | pub struct Element(u8);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/polynomials.rs:108:40
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let mut ret: GF256Polynomial = self.clone();
[INFO] [stdout]     |                      ---------------   ^^^^^^^^^^^^ expected `GF256Polynomial`, found `&GF256Polynomial`
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      expected due to this
[INFO] [stdout]     |
[INFO] [stdout] note: `GF256Polynomial` does not implement `Clone`, so `&GF256Polynomial` was cloned instead
[INFO] [stdout]    --> src/polynomials.rs:108:40
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let mut ret: GF256Polynomial = self.clone();
[INFO] [stdout]     |                                        ^^^^
[INFO] [stdout] help: consider annotating `GF256Polynomial` with `#[derive(Clone)]`
[INFO] [stdout]     |
[INFO] [stdout]  24 + #[derive(Clone)]
[INFO] [stdout]  25 | pub struct GF256Polynomial(Vec<Elt>);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/polynomials.rs:174:40
[INFO] [stdout]     |
[INFO] [stdout] 174 |         let mut ret: GF256Polynomial = self.clone();
[INFO] [stdout]     |                      ---------------   ^^^^^^^^^^^^ expected `GF256Polynomial`, found `&GF256Polynomial`
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      expected due to this
[INFO] [stdout]     |
[INFO] [stdout] note: `GF256Polynomial` does not implement `Clone`, so `&GF256Polynomial` was cloned instead
[INFO] [stdout]    --> src/polynomials.rs:174:40
[INFO] [stdout]     |
[INFO] [stdout] 174 |         let mut ret: GF256Polynomial = self.clone();
[INFO] [stdout]     |                                        ^^^^
[INFO] [stdout] help: consider annotating `GF256Polynomial` with `#[derive(Clone)]`
[INFO] [stdout]     |
[INFO] [stdout]  24 + #[derive(Clone)]
[INFO] [stdout]  25 | pub struct GF256Polynomial(Vec<Elt>);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Element`
[INFO] [stdout]    --> src/polynomials.rs:189:19
[INFO] [stdout]     |
[INFO] [stdout] 189 |         if factor == Elt::ZERO {
[INFO] [stdout]     |            ------ ^^ --------- Element
[INFO] [stdout]     |            |
[INFO] [stdout]     |            Element
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Element`
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Element` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 + #[derive(PartialEq)]
[INFO] [stdout]  95 | pub struct Element(u8);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0368]: binary assignment operation `*=` cannot be applied to type `&GF256Polynomial`
[INFO] [stdout]    --> src/polynomials.rs:215:9
[INFO] [stdout]     |
[INFO] [stdout] 215 |         result *= factor;
[INFO] [stdout]     |         ------^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         cannot use `*=` on type `&GF256Polynomial`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/polynomials.rs:216:9
[INFO] [stdout]     |
[INFO] [stdout] 213 |     fn mul(self, factor: Elt) -> GF256Polynomial {
[INFO] [stdout]     |                                  --------------- expected `GF256Polynomial` because of return type
[INFO] [stdout] ...
[INFO] [stdout] 216 |         result
[INFO] [stdout]     |         ^^^^^^ expected `GF256Polynomial`, found `&GF256Polynomial`
[INFO] [stdout]     |
[INFO] [stdout] note: `GF256Polynomial` does not implement `Clone`, so `&GF256Polynomial` was cloned instead
[INFO] [stdout]    --> src/polynomials.rs:214:26
[INFO] [stdout]     |
[INFO] [stdout] 214 |         let mut result = self.clone();
[INFO] [stdout]     |                          ^^^^
[INFO] [stdout] help: consider annotating `GF256Polynomial` with `#[derive(Clone)]`
[INFO] [stdout]     |
[INFO] [stdout]  24 + #[derive(Clone)]
[INFO] [stdout]  25 | pub struct GF256Polynomial(Vec<Elt>);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Element: Clone` is not satisfied
[INFO] [stdout]    --> src/polynomials.rs:241:24
[INFO] [stdout]     |
[INFO] [stdout] 241 |                 result.resize(product_degree + 1, Elt::new(0));
[INFO] [stdout]     |                        ^^^^^^ the trait `Clone` is not implemented for `Element`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `Vec::<T, A>::resize`
[INFO] [stdout]    --> /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/alloc/src/vec/mod.rs:3230:5
[INFO] [stdout] help: consider annotating `Element` with `#[derive(Clone)]`
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 + #[derive(Clone)]
[INFO] [stdout]  95 | pub struct Element(u8);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `clone` found for mutable reference `&mut GF256Polynomial` in the current scope
[INFO] [stdout]    --> src/polynomials.rs:278:23
[INFO] [stdout]     |
[INFO] [stdout] 278 |         *self = &self.clone() * rhs;
[INFO] [stdout]     |                       ^^^^^ method not found in `&mut GF256Polynomial`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the trait `Clone` defines an item `clone`, but is explicitly unimplemented
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `from_args` found for enum `ShamirMainCommand` in the current scope
[INFO] [stdout]    --> src/main.rs:333:40
[INFO] [stdout]     |
[INFO] [stdout]  63 | enum ShamirMainCommand {
[INFO] [stdout]     | ---------------------- variant or associated item `from_args` not found for this enum
[INFO] [stdout] ...
[INFO] [stdout] 333 |     let operation = ShamirMainCommand::from_args();
[INFO] [stdout]     |                                        ^^^^^^^^^ variant or associated item not found in `ShamirMainCommand`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout]     = note: the following trait defines an item `from_args`, perhaps you need to implement it:
[INFO] [stdout]             candidate #1: `StructOpt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0508]: cannot move out of type `[[Element; 256]; 256]`, a non-copy array
[INFO] [stdout]    --> src/galois_field_256.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |         Self::ALL_PRODUCTS[self.value() as usize][rhs.value() as usize]
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         cannot move out of here
[INFO] [stdout]     |         move occurs because value has type `Element`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Element` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout] ...
[INFO] [stdout] 165 |         Self::ALL_PRODUCTS[self.value() as usize][rhs.value() as usize]
[INFO] [stdout]     |         --------------------------------------------------------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0508]: cannot move out of type `[[Element; 256]; 256]`, a non-copy array
[INFO] [stdout]    --> src/galois_field_256.rs:186:22
[INFO] [stdout]     |
[INFO] [stdout] 186 |             .map(|x| Self::ALL_PRODUCTS[self.value() as usize][x.value() as usize])
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      cannot move out of here
[INFO] [stdout]     |                      move occurs because value has type `Element`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Element` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout] ...
[INFO] [stdout] 186 |             .map(|x| Self::ALL_PRODUCTS[self.value() as usize][x.value() as usize])
[INFO] [stdout]     |                      ------------------------------------------------------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0508]: cannot move out of type `[Option<Element>; 256]`, a non-copy array
[INFO] [stdout]    --> src/galois_field_256.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         Self::ALL_ELEMENT_INVERSES[rhs.value() as usize]
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         cannot move out of here
[INFO] [stdout]     |         move occurs because value has type `Option<Element>`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Element` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout] ...
[INFO] [stdout] 185 |         Self::ALL_ELEMENT_INVERSES[rhs.value() as usize]
[INFO] [stdout]     |         ------------------------------------------------ you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: constant of non-structural type `Element` in a pattern
[INFO] [stdout]    --> src/galois_field_256.rs:383:13
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ------------------ `Element` must be annotated with `#[derive(PartialEq)]` to be usable in patterns
[INFO] [stdout] ...
[INFO] [stdout] 190 | impl Element {
[INFO] [stdout]     | ------------
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub const ZERO: Self = Self(0);
[INFO] [stdout]     |     -------------------- constant defined here
[INFO] [stdout] ...
[INFO] [stdout] 383 |             Self::ZERO => None,
[INFO] [stdout]     |             ^^^^^^^^^^ constant of non-structural type
[INFO] [stdout]     |
[INFO] [stdout]     = note: see https://doc.rust-lang.org/stable/std/marker/trait.StructuralPartialEq.html for details
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0508]: cannot move out of type `[[Element; 256]; 256]`, a non-copy array
[INFO] [stdout]    --> src/galois_field_256.rs:402:9
[INFO] [stdout]     |
[INFO] [stdout] 402 |         Self::ALL_POWERS[self.value() as usize][exponent as usize]
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         cannot move out of here
[INFO] [stdout]     |         move occurs because value has type `Element`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Element` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout] ...
[INFO] [stdout] 402 |         Self::ALL_POWERS[self.value() as usize][exponent as usize]
[INFO] [stdout]     |         ---------------------------------------------------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of a shared reference
[INFO] [stdout]   --> src/polynomials.rs:84:37
[INFO] [stdout]    |
[INFO] [stdout] 84 |                 for (idx, &coef) in rhs.coefficients().iter().enumerate() {
[INFO] [stdout]    |                            ----     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            data moved here
[INFO] [stdout]    |                            move occurs because `coef` has type `Element`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] help: consider removing the borrow
[INFO] [stdout]    |
[INFO] [stdout] 84 -                 for (idx, &coef) in rhs.coefficients().iter().enumerate() {
[INFO] [stdout] 84 +                 for (idx, coef) in rhs.coefficients().iter().enumerate() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Element>`
[INFO] [stdout]   --> src/polynomials.rs:85:35
[INFO] [stdout]    |
[INFO] [stdout] 85 |                     self.0[idx] = self.0[idx] + coef;
[INFO] [stdout]    |                                   ^^^^^^^^^^^-------
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   value moved due to usage in operator
[INFO] [stdout]    |                                   move occurs because value has type `Element`, which does not implement the `Copy` trait
[INFO] [stdout]    |
[INFO] [stdout] note: calling this operator moves the left-hand side
[INFO] [stdout]   --> /rustc/1159e78c4747b02ef996e55082b704c09b970588/library/core/src/ops/arith.rs:93:12
[INFO] [stdout] note: if `Element` implemented `Clone`, you could clone the value
[INFO] [stdout]   --> src/galois_field_256.rs:94:1
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub struct Element(u8);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/polynomials.rs:85:35
[INFO] [stdout]    |
[INFO] [stdout] 85 |                     self.0[idx] = self.0[idx] + coef;
[INFO] [stdout]    |                                   ----------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Element>`
[INFO] [stdout]    --> src/polynomials.rs:88:45
[INFO] [stdout]     |
[INFO] [stdout]  88 |                 while !self.0.is_empty() && self.0[self.0.len() - 1].value() == 0 {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^ ------- value moved due to this method call
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             move occurs because value has type `Element`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: `Element::value` takes ownership of the receiver `self`, which moves value
[INFO] [stdout]    --> src/galois_field_256.rs:267:24
[INFO] [stdout]     |
[INFO] [stdout] 267 |     pub const fn value(self) -> u8 {
[INFO] [stdout]     |                        ^^^^
[INFO] [stdout] note: if `Element` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/polynomials.rs:88:45
[INFO] [stdout]     |
[INFO] [stdout]  88 |                 while !self.0.is_empty() && self.0[self.0.len() - 1].value() == 0 {
[INFO] [stdout]     |                                             ------------------------ you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Element>`
[INFO] [stdout]    --> src/polynomials.rs:455:35
[INFO] [stdout]     |
[INFO] [stdout] 455 |                 Some(_) => return self.coefficients()[0].value(),
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^ ------- value moved due to this method call
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   move occurs because value has type `Element`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: `Element::value` takes ownership of the receiver `self`, which moves value
[INFO] [stdout]    --> src/galois_field_256.rs:267:24
[INFO] [stdout]     |
[INFO] [stdout] 267 |     pub const fn value(self) -> u8 {
[INFO] [stdout]     |                        ^^^^
[INFO] [stdout] note: if `Element` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/polynomials.rs:455:35
[INFO] [stdout]     |
[INFO] [stdout] 455 |                 Some(_) => return self.coefficients()[0].value(),
[INFO] [stdout]     |                                   ---------------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0507]: cannot move out of index of `Vec<Element>`
[INFO] [stdout]    --> src/polynomials.rs:461:32
[INFO] [stdout]     |
[INFO] [stdout] 461 |             result = result + (self.coefficients()[i] * Elt::new(x).power(i as u8));
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^ move occurs because value has type `Element`, which does not implement the `Copy` trait
[INFO] [stdout]     |
[INFO] [stdout] note: if `Element` implemented `Clone`, you could clone the value
[INFO] [stdout]    --> src/galois_field_256.rs:94:1
[INFO] [stdout]     |
[INFO] [stdout]  94 | pub struct Element(u8);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type
[INFO] [stdout]     |
[INFO] [stdout]    ::: src/polynomials.rs:461:32
[INFO] [stdout]     |
[INFO] [stdout] 461 |             result = result + (self.coefficients()[i] * Elt::new(x).power(i as u8));
[INFO] [stdout]     |                                ---------------------- you could clone this value
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308, E0368, E0369, E0507, E0508, E0554, E0557, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `shamir_file_secret_sharing` (bin "shamir_file_secret_sharing") due to 29 previous errors
[INFO] running `Command { std: "docker" "inspect" "9873bfd92338e8abc3097ef1c670f9a439be56eb5b7d1fe5ad5a4b90b9ecb9a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9873bfd92338e8abc3097ef1c670f9a439be56eb5b7d1fe5ad5a4b90b9ecb9a6", kill_on_drop: false }`
[INFO] [stdout] 9873bfd92338e8abc3097ef1c670f9a439be56eb5b7d1fe5ad5a4b90b9ecb9a6
