[INFO] updating cached repository https://github.com/OneMoreByte/pd-spectra-driver
[INFO] running `"git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "-c" "remote.origin.fetch=refs/heads/*:refs/heads/*" "fetch" "origin" "--force" "--prune"`
[INFO] running `"git" "rev-parse" "HEAD"`
[INFO] [stdout] cfb6fa01998533af854a15a5da93486e58398d5a
[INFO] checking OneMoreByte/pd-spectra-driver against master#209b2be09fcaff937480d1fbbe8b31646e361c7a for pr-70917
[INFO] running `"git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FOneMoreByte%2Fpd-spectra-driver" "/workspace/builds/worker-6/source"`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/OneMoreByte/pd-spectra-driver on toolchain 209b2be09fcaff937480d1fbbe8b31646e361c7a
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "read-manifest" "--manifest-path" "Cargo.toml"`
[INFO] started tweaking git repo https://github.com/OneMoreByte/pd-spectra-driver
[INFO] finished tweaking git repo https://github.com/OneMoreByte/pd-spectra-driver
[INFO] tweaked toml for git repo https://github.com/OneMoreByte/pd-spectra-driver written to /workspace/builds/worker-6/source/Cargo.toml
[INFO] crate git repo https://github.com/OneMoreByte/pd-spectra-driver already has a lockfile, it will not be regenerated
[INFO] running `"/workspace/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "fetch" "--locked" "--manifest-path" "Cargo.toml"`
[INFO] running `"docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6/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" "MAP_USER_ID=0" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--network" "none" "rustops/crates-build-env" "/opt/rustwide/cargo-home/bin/cargo" "+209b2be09fcaff937480d1fbbe8b31646e361c7a" "check" "--frozen" "--all" "--all-targets"`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] bc9d1bef2ac439a8d4ee7da8a3edc0b96a9b90c18429f3502d9ccf8426f9840b
[INFO] running `"docker" "start" "-a" "bc9d1bef2ac439a8d4ee7da8a3edc0b96a9b90c18429f3502d9ccf8426f9840b"`
[INFO] [stderr]     Checking nix v0.14.1
[INFO] [stderr]     Checking sysfs_gpio v0.5.4
[INFO] [stderr]     Checking spidev v0.4.0
[INFO] [stderr]     Checking eink-info-display v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `time`
[INFO] [stderr]    --> src/main.rs:117:19
[INFO] [stderr]     |
[INFO] [stderr] 117 |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr]     |                   ^^^^ use of undeclared type or module `time`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `time`
[INFO] [stderr]    --> src/main.rs:118:18
[INFO] [stderr]     |
[INFO] [stderr] 118 |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr]     |                  ^^^^ use of undeclared type or module `time`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:132:9
[INFO] [stderr]     |
[INFO] [stderr] 132 |         thread::sleep(five_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:134:9
[INFO] [stderr]     |
[INFO] [stderr] 134 |         thread::sleep(five_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:136:9
[INFO] [stderr]     |
[INFO] [stderr] 136 |         thread::sleep(ten_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:138:9
[INFO] [stderr]     |
[INFO] [stderr] 138 |         thread::sleep(five_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:140:9
[INFO] [stderr]     |
[INFO] [stderr] 140 |         thread::sleep(five_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:165:9
[INFO] [stderr]     |
[INFO] [stderr] 165 |         thread::sleep(time::Duration::from_millis(150));
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `time`
[INFO] [stderr]    --> src/main.rs:165:23
[INFO] [stderr]     |
[INFO] [stderr] 165 |         thread::sleep(time::Duration::from_millis(150));
[INFO] [stderr]     |                       ^^^^ use of undeclared type or module `time`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:199:13
[INFO] [stderr]     |
[INFO] [stderr] 199 |             thread::sleep(time::Duration::from_millis(5));
[INFO] [stderr]     |             ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `time`
[INFO] [stderr]    --> src/main.rs:199:27
[INFO] [stderr]     |
[INFO] [stderr] 199 |             thread::sleep(time::Duration::from_millis(5));
[INFO] [stderr]     |                           ^^^^ use of undeclared type or module `time`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_x` in this scope
[INFO] [stderr]   --> src/main.rs:60:34
[INFO] [stderr]    |
[INFO] [stderr] 60 |     fn get_byte_array() ->  [u8; max_x * max_y] {
[INFO] [stderr]    |                                  ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_y` in this scope
[INFO] [stderr]   --> src/main.rs:60:42
[INFO] [stderr]    |
[INFO] [stderr] 60 |     fn get_byte_array() ->  [u8; max_x * max_y] {
[INFO] [stderr]    |                                          ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0423]: expected value, found builtin type `u8`
[INFO] [stderr]   --> src/main.rs:61:26
[INFO] [stderr]    |
[INFO] [stderr] 61 |         let mut array = [u8; max_x * max_y];
[INFO] [stderr]    |                          ^^ not a value
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_x` in this scope
[INFO] [stderr]   --> src/main.rs:61:30
[INFO] [stderr]    |
[INFO] [stderr] 61 |         let mut array = [u8; max_x * max_y];
[INFO] [stderr]    |                              ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_y` in this scope
[INFO] [stderr]   --> src/main.rs:61:38
[INFO] [stderr]    |
[INFO] [stderr] 61 |         let mut array = [u8; max_x * max_y];
[INFO] [stderr]    |                                      ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_x` in this scope
[INFO] [stderr]   --> src/main.rs:62:22
[INFO] [stderr]    |
[INFO] [stderr] 62 |         for i in 0..(max_x * max_y) {
[INFO] [stderr]    |                      ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_y` in this scope
[INFO] [stderr]   --> src/main.rs:62:30
[INFO] [stderr]    |
[INFO] [stderr] 62 |         for i in 0..(max_x * max_y) {
[INFO] [stderr]    |                              ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0424]: expected value, found module `self`
[INFO] [stderr]   --> src/main.rs:63:24
[INFO] [stderr]    |
[INFO] [stderr] 60 | /     fn get_byte_array() ->  [u8; max_x * max_y] {
[INFO] [stderr] 61 | |         let mut array = [u8; max_x * max_y];
[INFO] [stderr] 62 | |         for i in 0..(max_x * max_y) {
[INFO] [stderr] 63 | |             array[i] = self.byte_array[i];
[INFO] [stderr]    | |                        ^^^^ `self` value is a keyword only available in methods with a `self` parameter
[INFO] [stderr] ...  |
[INFO] [stderr] 66 | |         array
[INFO] [stderr] 67 | |     }
[INFO] [stderr]    | |_____- this function doesn't have a `self` parameter
[INFO] [stderr] 
[INFO] [stderr] error[E0412]: cannot find type `GenericImage` in this scope
[INFO] [stderr]   --> src/main.rs:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 |     image: GenericImage,
[INFO] [stderr]    |            ^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0412]: cannot find type `GenericImage` in this scope
[INFO] [stderr]   --> src/main.rs:83:19
[INFO] [stderr]    |
[INFO] [stderr] 83 |     fn new(image: GenericImage, color_layer: Option<bool>) -> EinkImage {
[INFO] [stderr]    |                   ^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:117:9
[INFO] [stderr]     |
[INFO] [stderr] 117 |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr]     |         ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `ten_ms` in this scope
[INFO] [stderr]    --> src/main.rs:118:9
[INFO] [stderr]     |
[INFO] [stderr] 118 |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr]     |         ^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:132:23
[INFO] [stderr]     |
[INFO] [stderr] 132 |         thread::sleep(five_ms);
[INFO] [stderr]     |                       ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:134:23
[INFO] [stderr]     |
[INFO] [stderr] 134 |         thread::sleep(five_ms);
[INFO] [stderr]     |                       ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `ten_ms` in this scope
[INFO] [stderr]    --> src/main.rs:136:23
[INFO] [stderr]     |
[INFO] [stderr] 136 |         thread::sleep(ten_ms);
[INFO] [stderr]     |                       ^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:138:23
[INFO] [stderr]     |
[INFO] [stderr] 138 |         thread::sleep(five_ms);
[INFO] [stderr]     |                       ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:140:23
[INFO] [stderr]     |
[INFO] [stderr] 140 |         thread::sleep(five_ms);
[INFO] [stderr]     |                       ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find function `create_spi` in this scope
[INFO] [stderr]    --> src/main.rs:205:18
[INFO] [stderr]     |
[INFO] [stderr] 205 |             spi: create_spi(spi_path),
[INFO] [stderr]     |                  ^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `spi_path` in this scope
[INFO] [stderr]    --> src/main.rs:205:29
[INFO] [stderr]     |
[INFO] [stderr] 205 |             spi: create_spi(spi_path),
[INFO] [stderr]     |                             ^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread::sleep`
[INFO] [stderr]  --> src/main.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::thread::sleep;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]  --> src/main.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::time::Duration;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SpidevTransfer`
[INFO] [stderr]  --> src/main.rs:9:37
[INFO] [stderr]   |
[INFO] [stderr] 9 | use spidev::{Spidev, SpidevOptions, SpidevTransfer, SpiModeFlags};
[INFO] [stderr]   |                                     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/main.rs:69:17
[INFO] [stderr]    |
[INFO] [stderr] 69 |     fn new() -> Layer {
[INFO] [stderr]    |        ---      ^^^^^ expected struct `Layer`, found `()`
[INFO] [stderr]    |        |
[INFO] [stderr]    |        implicitly returns `()` as its body has no tail or `return` expression
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/main.rs:83:63
[INFO] [stderr]    |
[INFO] [stderr] 83 |     fn new(image: GenericImage, color_layer: Option<bool>) -> EinkImage {
[INFO] [stderr]    |        ---                                                    ^^^^^^^^^ expected struct `EinkImage`, found `()`
[INFO] [stderr]    |        |
[INFO] [stderr]    |        implicitly returns `()` as its body has no tail or `return` expression
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `time`
[INFO] [stderr]    --> src/main.rs:117:19
[INFO] [stderr]     |
[INFO] [stderr] 117 |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr]     |                   ^^^^ use of undeclared type or module `time`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `time`
[INFO] [stderr]    --> src/main.rs:118:18
[INFO] [stderr]     |
[INFO] [stderr] 118 |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr]     |                  ^^^^ use of undeclared type or module `time`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:132:9
[INFO] [stderr]     |
[INFO] [stderr] 132 |         thread::sleep(five_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:134:9
[INFO] [stderr]     |
[INFO] [stderr] 134 |         thread::sleep(five_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:136:9
[INFO] [stderr]     |
[INFO] [stderr] 136 |         thread::sleep(ten_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:138:9
[INFO] [stderr]     |
[INFO] [stderr] 138 |         thread::sleep(five_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:140:9
[INFO] [stderr]     |
[INFO] [stderr] 140 |         thread::sleep(five_ms);
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:165:9
[INFO] [stderr]     |
[INFO] [stderr] 165 |         thread::sleep(time::Duration::from_millis(150));
[INFO] [stderr]     |         ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `time`
[INFO] [stderr]    --> src/main.rs:165:23
[INFO] [stderr]     |
[INFO] [stderr] 165 |         thread::sleep(time::Duration::from_millis(150));
[INFO] [stderr]     |                       ^^^^ use of undeclared type or module `time`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `thread`
[INFO] [stderr]    --> src/main.rs:199:13
[INFO] [stderr]     |
[INFO] [stderr] 199 |             thread::sleep(time::Duration::from_millis(5));
[INFO] [stderr]     |             ^^^^^^ use of undeclared type or module `thread`
[INFO] [stderr] 
[INFO] [stderr] error[E0433]: failed to resolve: use of undeclared type or module `time`
[INFO] [stderr]    --> src/main.rs:199:27
[INFO] [stderr]     |
[INFO] [stderr] 199 |             thread::sleep(time::Duration::from_millis(5));
[INFO] [stderr]     |                           ^^^^ use of undeclared type or module `time`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_x` in this scope
[INFO] [stderr]   --> src/main.rs:60:34
[INFO] [stderr]    |
[INFO] [stderr] 60 |     fn get_byte_array() ->  [u8; max_x * max_y] {
[INFO] [stderr]    |                                  ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_y` in this scope
[INFO] [stderr]   --> src/main.rs:60:42
[INFO] [stderr]    |
[INFO] [stderr] 60 |     fn get_byte_array() ->  [u8; max_x * max_y] {
[INFO] [stderr]    |                                          ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0423]: expected value, found builtin type `u8`
[INFO] [stderr]   --> src/main.rs:61:26
[INFO] [stderr]    |
[INFO] [stderr] 61 |         let mut array = [u8; max_x * max_y];
[INFO] [stderr]    |                          ^^ not a value
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_x` in this scope
[INFO] [stderr]   --> src/main.rs:61:30
[INFO] [stderr]    |
[INFO] [stderr] 61 |         let mut array = [u8; max_x * max_y];
[INFO] [stderr]    |                              ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_y` in this scope
[INFO] [stderr]   --> src/main.rs:61:38
[INFO] [stderr]    |
[INFO] [stderr] 61 |         let mut array = [u8; max_x * max_y];
[INFO] [stderr]    |                                      ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_x` in this scope
[INFO] [stderr]   --> src/main.rs:62:22
[INFO] [stderr]    |
[INFO] [stderr] 62 |         for i in 0..(max_x * max_y) {
[INFO] [stderr]    |                      ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `max_y` in this scope
[INFO] [stderr]   --> src/main.rs:62:30
[INFO] [stderr]    |
[INFO] [stderr] 62 |         for i in 0..(max_x * max_y) {
[INFO] [stderr]    |                              ^^^^^ a field by this name exists in `Self`
[INFO] [stderr] 
[INFO] [stderr] error[E0424]: expected value, found module `self`
[INFO] [stderr]   --> src/main.rs:63:24
[INFO] [stderr]    |
[INFO] [stderr] 60 | /     fn get_byte_array() ->  [u8; max_x * max_y] {
[INFO] [stderr] 61 | |         let mut array = [u8; max_x * max_y];
[INFO] [stderr] 62 | |         for i in 0..(max_x * max_y) {
[INFO] [stderr] 63 | |             array[i] = self.byte_array[i];
[INFO] [stderr]    | |                        ^^^^ `self` value is a keyword only available in methods with a `self` parameter
[INFO] [stderr] ...  |
[INFO] [stderr] 66 | |         array
[INFO] [stderr] 67 | |     }
[INFO] [stderr]    | |_____- this function doesn't have a `self` parameter
[INFO] [stderr] 
[INFO] [stderr] error[E0412]: cannot find type `GenericImage` in this scope
[INFO] [stderr]   --> src/main.rs:77:12
[INFO] [stderr]    |
[INFO] [stderr] 77 |     image: GenericImage,
[INFO] [stderr]    |            ^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0412]: cannot find type `GenericImage` in this scope
[INFO] [stderr]   --> src/main.rs:83:19
[INFO] [stderr]    |
[INFO] [stderr] 83 |     fn new(image: GenericImage, color_layer: Option<bool>) -> EinkImage {
[INFO] [stderr]    |                   ^^^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:117:9
[INFO] [stderr]     |
[INFO] [stderr] 117 |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr]     |         ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `ten_ms` in this scope
[INFO] [stderr]    --> src/main.rs:118:9
[INFO] [stderr]     |
[INFO] [stderr] 118 |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr]     |         ^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:132:23
[INFO] [stderr]     |
[INFO] [stderr] 132 |         thread::sleep(five_ms);
[INFO] [stderr]     |                       ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:134:23
[INFO] [stderr]     |
[INFO] [stderr] 134 |         thread::sleep(five_ms);
[INFO] [stderr]     |                       ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `ten_ms` in this scope
[INFO] [stderr]    --> src/main.rs:136:23
[INFO] [stderr]     |
[INFO] [stderr] 136 |         thread::sleep(ten_ms);
[INFO] [stderr]     |                       ^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:138:23
[INFO] [stderr]     |
[INFO] [stderr] 138 |         thread::sleep(five_ms);
[INFO] [stderr]     |                       ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `five_ms` in this scope
[INFO] [stderr]    --> src/main.rs:140:23
[INFO] [stderr]     |
[INFO] [stderr] 140 |         thread::sleep(five_ms);
[INFO] [stderr]     |                       ^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find function `create_spi` in this scope
[INFO] [stderr]    --> src/main.rs:205:18
[INFO] [stderr]     |
[INFO] [stderr] 205 |             spi: create_spi(spi_path),
[INFO] [stderr]     |                  ^^^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] error[E0425]: cannot find value `spi_path` in this scope
[INFO] [stderr]    --> src/main.rs:205:29
[INFO] [stderr]     |
[INFO] [stderr] 205 |             spi: create_spi(spi_path),
[INFO] [stderr]     |                             ^^^^^^^^ not found in this scope
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread::sleep`
[INFO] [stderr]  --> src/main.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::thread::sleep;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::time::Duration`
[INFO] [stderr]  --> src/main.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use std::time::Duration;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `SpidevTransfer`
[INFO] [stderr]  --> src/main.rs:9:37
[INFO] [stderr]   |
[INFO] [stderr] 9 | use spidev::{Spidev, SpidevOptions, SpidevTransfer, SpiModeFlags};
[INFO] [stderr]   |                                     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/main.rs:69:17
[INFO] [stderr]    |
[INFO] [stderr] 69 |     fn new() -> Layer {
[INFO] [stderr]    |        ---      ^^^^^ expected struct `Layer`, found `()`
[INFO] [stderr]    |        |
[INFO] [stderr]    |        implicitly returns `()` as its body has no tail or `return` expression
[INFO] [stderr] 
[INFO] [stderr] error[E0308]: mismatched types
[INFO] [stderr]   --> src/main.rs:83:63
[INFO] [stderr]    |
[INFO] [stderr] 83 |     fn new(image: GenericImage, color_layer: Option<bool>) -> EinkImage {
[INFO] [stderr]    |        ---                                                    ^^^^^^^^^ expected struct `EinkImage`, found `()`
[INFO] [stderr]    |        |
[INFO] [stderr]    |        implicitly returns `()` as its body has no tail or `return` expression
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:120:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] 120 | |         self.power.set_direction(Direction::High)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:121:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] 120 | |         self.power.set_direction(Direction::High)?;
[INFO] [stderr] 121 | |         self.reset.set_direction(Direction::Low)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:122:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 122 | |         self.cs.set_direction(Direction::Low)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:123:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 123 | |         self.dc.set_direction(Direction::Low)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:124:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 124 | |         self.busy.set_direction(Direction::In)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:139:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 139 | |         self.spi.write(&[0x00, 0x0E])?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:142:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 142 | |         self.spi.write(&[0xe5, 0x14])?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:146:13
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 146 | |             self.spi.write(&[0xe0, 0x02])?;
[INFO] [stderr]     | |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:148:13
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 148 | |             self.spi.write(&[0xcf, 0x02])?;
[INFO] [stderr]     | |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:151:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:160:9
[INFO] [stderr]     |
[INFO] [stderr] 157 | /     fn power_off(&self) {
[INFO] [stderr] 158 | |         self.spi.write(&[0x02, 0x02]);
[INFO] [stderr] 159 | |         self.wait_busy(1);
[INFO] [stderr] 160 | |         self.reset.set_direction(Direction::In)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 170 | |         self.busy.unexport();
[INFO] [stderr] 171 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:120:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] 120 | |         self.power.set_direction(Direction::High)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:164:9
[INFO] [stderr]     |
[INFO] [stderr] 157 | /     fn power_off(&self) {
[INFO] [stderr] 158 | |         self.spi.write(&[0x02, 0x02]);
[INFO] [stderr] 159 | |         self.wait_busy(1);
[INFO] [stderr] 160 | |         self.reset.set_direction(Direction::In)?;
[INFO] [stderr] ...   |
[INFO] [stderr] 164 | |         self.busy.set_direction(Direction::Low)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 170 | |         self.busy.unexport();
[INFO] [stderr] 171 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:121:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] 120 | |         self.power.set_direction(Direction::High)?;
[INFO] [stderr] 121 | |         self.reset.set_direction(Direction::Low)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:122:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 122 | |         self.cs.set_direction(Direction::Low)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:123:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 123 | |         self.dc.set_direction(Direction::Low)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `copy` found for type `u8` in the current scope
[INFO] [stderr]    --> src/main.rs:177:35
[INFO] [stderr]     |
[INFO] [stderr] 177 |             self.spi.write(&[l.id.copy()]);
[INFO] [stderr]     |                                   ^^^^ method not found in `u8`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `get_byte_array` found for reference `&Layer` in the current scope
[INFO] [stderr]    --> src/main.rs:181:31
[INFO] [stderr]     |
[INFO] [stderr] 181 |             self.spi.write(&l.get_byte_array());
[INFO] [stderr]     |                             --^^^^^^^^^^^^^^
[INFO] [stderr]     |                             | |
[INFO] [stderr]     |                             | this is an associated function, not a method
[INFO] [stderr]     |                             help: use associated function syntax instead: `Layer::get_byte_array`
[INFO] [stderr]     |
[INFO] [stderr]     = note: found the following associated functions; to be used as methods, functions must have a `self` parameter
[INFO] [stderr] note: the candidate is defined in an impl for the type `Layer`
[INFO] [stderr]    --> src/main.rs:60:5
[INFO] [stderr]     |
[INFO] [stderr] 60  |     fn get_byte_array() ->  [u8; max_x * max_y] {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:124:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 124 | |         self.busy.set_direction(Direction::In)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:195:23
[INFO] [stderr]     |
[INFO] [stderr] 193 | /     fn wait_busy(&self, state: u8) {
[INFO] [stderr] 194 | |         loop {
[INFO] [stderr] 195 | |             let val = self.busy.get_value()?;
[INFO] [stderr]     | |                       ^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] 196 | |             if val == state {
[INFO] [stderr] ...   |
[INFO] [stderr] 200 | |         }
[INFO] [stderr] 201 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:139:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 139 | |         self.spi.write(&[0x00, 0x0E])?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0063]: missing fields `max_x`, `max_y`, `power` in initializer of `EinkDisplay`
[INFO] [stderr]    --> src/main.rs:204:9
[INFO] [stderr]     |
[INFO] [stderr] 204 |         EinkDisplay {
[INFO] [stderr]     |         ^^^^^^^^^^^ missing `max_x`, `max_y`, `power`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:142:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 142 | |         self.spi.write(&[0xe5, 0x14])?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 48 previous errors
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0063, E0277, E0308, E0412, E0423, E0424, E0425, E0433, E0599.
[INFO] [stderr] For more information about an error, try `rustc --explain E0063`.
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:146:13
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 146 | |             self.spi.write(&[0xe0, 0x02])?;
[INFO] [stderr]     | |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error: could not compile `eink-info-display`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:148:13
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 148 | |             self.spi.write(&[0xcf, 0x02])?;
[INFO] [stderr]     | |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:151:9
[INFO] [stderr]     |
[INFO] [stderr] 116 | /     fn power_on(&self) {
[INFO] [stderr] 117 | |         five_ms = time::Duration::from_millis(5);
[INFO] [stderr] 118 | |         ten_ms = time::Duration::from_millis(10);
[INFO] [stderr] 119 | |         // Set pin direction
[INFO] [stderr] ...   |
[INFO] [stderr] 151 | |         self.spi.write(&[0x00, 0x0F, 0x89])?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] 152 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:160:9
[INFO] [stderr]     |
[INFO] [stderr] 157 | /     fn power_off(&self) {
[INFO] [stderr] 158 | |         self.spi.write(&[0x02, 0x02]);
[INFO] [stderr] 159 | |         self.wait_busy(1);
[INFO] [stderr] 160 | |         self.reset.set_direction(Direction::In)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 170 | |         self.busy.unexport();
[INFO] [stderr] 171 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:164:9
[INFO] [stderr]     |
[INFO] [stderr] 157 | /     fn power_off(&self) {
[INFO] [stderr] 158 | |         self.spi.write(&[0x02, 0x02]);
[INFO] [stderr] 159 | |         self.wait_busy(1);
[INFO] [stderr] 160 | |         self.reset.set_direction(Direction::In)?;
[INFO] [stderr] ...   |
[INFO] [stderr] 164 | |         self.busy.set_direction(Direction::Low)?;
[INFO] [stderr]     | |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] ...   |
[INFO] [stderr] 170 | |         self.busy.unexport();
[INFO] [stderr] 171 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `copy` found for type `u8` in the current scope
[INFO] [stderr]    --> src/main.rs:177:35
[INFO] [stderr]     |
[INFO] [stderr] 177 |             self.spi.write(&[l.id.copy()]);
[INFO] [stderr]     |                                   ^^^^ method not found in `u8`
[INFO] [stderr] 
[INFO] [stderr] error[E0599]: no method named `get_byte_array` found for reference `&Layer` in the current scope
[INFO] [stderr]    --> src/main.rs:181:31
[INFO] [stderr]     |
[INFO] [stderr] 181 |             self.spi.write(&l.get_byte_array());
[INFO] [stderr]     |                             --^^^^^^^^^^^^^^
[INFO] [stderr]     |                             | |
[INFO] [stderr]     |                             | this is an associated function, not a method
[INFO] [stderr]     |                             help: use associated function syntax instead: `Layer::get_byte_array`
[INFO] [stderr]     |
[INFO] [stderr]     = note: found the following associated functions; to be used as methods, functions must have a `self` parameter
[INFO] [stderr] note: the candidate is defined in an impl for the type `Layer`
[INFO] [stderr]    --> src/main.rs:60:5
[INFO] [stderr]     |
[INFO] [stderr] 60  |     fn get_byte_array() ->  [u8; max_x * max_y] {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] error[E0277]: the `?` operator can only be used in a method that returns `Result` or `Option` (or another type that implements `std::ops::Try`)
[INFO] [stderr]    --> src/main.rs:195:23
[INFO] [stderr]     |
[INFO] [stderr] 193 | /     fn wait_busy(&self, state: u8) {
[INFO] [stderr] 194 | |         loop {
[INFO] [stderr] 195 | |             let val = self.busy.get_value()?;
[INFO] [stderr]     | |                       ^^^^^^^^^^^^^^^^^^^^^^ cannot use the `?` operator in a method that returns `()`
[INFO] [stderr] 196 | |             if val == state {
[INFO] [stderr] ...   |
[INFO] [stderr] 200 | |         }
[INFO] [stderr] 201 | |     }
[INFO] [stderr]     | |_____- this function should return `Result` or `Option` to accept `?`
[INFO] [stderr]     |
[INFO] [stderr]     = help: the trait `std::ops::Try` is not implemented for `()`
[INFO] [stderr]     = note: required by `std::ops::Try::from_error`
[INFO] [stderr] 
[INFO] [stderr] error[E0063]: missing fields `max_x`, `max_y`, `power` in initializer of `EinkDisplay`
[INFO] [stderr]    --> src/main.rs:204:9
[INFO] [stderr]     |
[INFO] [stderr] 204 |         EinkDisplay {
[INFO] [stderr]     |         ^^^^^^^^^^^ missing `max_x`, `max_y`, `power`
[INFO] [stderr] 
[INFO] [stderr] error: aborting due to 48 previous errors
[INFO] [stderr] 
[INFO] [stderr] Some errors have detailed explanations: E0063, E0277, E0308, E0412, E0423, E0424, E0425, E0433, E0599.
[INFO] [stderr] For more information about an error, try `rustc --explain E0063`.
[INFO] [stderr] error: could not compile `eink-info-display`.
[INFO] [stderr] 
[INFO] [stderr] To learn more, run the command again with --verbose.
[INFO] running `"docker" "inspect" "bc9d1bef2ac439a8d4ee7da8a3edc0b96a9b90c18429f3502d9ccf8426f9840b"`
[INFO] running `"docker" "rm" "-f" "bc9d1bef2ac439a8d4ee7da8a3edc0b96a9b90c18429f3502d9ccf8426f9840b"`
[INFO] [stdout] bc9d1bef2ac439a8d4ee7da8a3edc0b96a9b90c18429f3502d9ccf8426f9840b
