[INFO] cloning repository https://github.com/shaggysa/ev3dev-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/shaggysa/ev3dev-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshaggysa%2Fev3dev-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshaggysa%2Fev3dev-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 94698223c5f9678165a7ce30fdcbad8e70ee73da
[INFO] testing shaggysa/ev3dev-rs against beta-2026-01-20 for beta-1.94-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshaggysa%2Fev3dev-rs" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/shaggysa/ev3dev-rs
[INFO] finished tweaking git repo https://github.com/shaggysa/ev3dev-rs
[INFO] tweaked toml for git repo https://github.com/shaggysa/ev3dev-rs written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/shaggysa/ev3dev-rs on toolchain beta-2026-01-20
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-01-20" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/shaggysa/ev3dev-rs 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" "+beta-2026-01-20" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-01-20" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 36826fe8bd515c1fbbcaccd695f16946d29da7de7527dc2dff71259793813e42
[INFO] running `Command { std: "docker" "start" "-a" "36826fe8bd515c1fbbcaccd695f16946d29da7de7527dc2dff71259793813e42", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "36826fe8bd515c1fbbcaccd695f16946d29da7de7527dc2dff71259793813e42", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "36826fe8bd515c1fbbcaccd695f16946d29da7de7527dc2dff71259793813e42", kill_on_drop: false }`
[INFO] [stdout] 36826fe8bd515c1fbbcaccd695f16946d29da7de7527dc2dff71259793813e42
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-01-20" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cce4c7bc11b39d888a70c5e79d1f5a1914bd09bc6076c5675fd47aa83b42c276
[INFO] running `Command { std: "docker" "start" "-a" "cce4c7bc11b39d888a70c5e79d1f5a1914bd09bc6076c5675fd47aa83b42c276", kill_on_drop: false }`
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]    Compiling fixed v1.30.0
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling az v1.3.0
[INFO] [stderr]    Compiling fixedbitset v0.5.7
[INFO] [stderr]    Compiling bytemuck v1.24.0
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling zerocopy-derive v0.8.33
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling pin-project v1.1.10
[INFO] [stderr]    Compiling futures-concurrency v7.7.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling ev3dev-rs v0.2.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.98s
[INFO] running `Command { std: "docker" "inspect" "cce4c7bc11b39d888a70c5e79d1f5a1914bd09bc6076c5675fd47aa83b42c276", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cce4c7bc11b39d888a70c5e79d1f5a1914bd09bc6076c5675fd47aa83b42c276", kill_on_drop: false }`
[INFO] [stdout] cce4c7bc11b39d888a70c5e79d1f5a1914bd09bc6076c5675fd47aa83b42c276
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-01-20" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 845eec5ff86d4a9890b186dda388e5aa7b25d7c444645bc520269413af5a1fd9
[INFO] running `Command { std: "docker" "start" "-a" "845eec5ff86d4a9890b186dda388e5aa7b25d7c444645bc520269413af5a1fd9", kill_on_drop: false }`
[INFO] [stderr]    Compiling ev3dev-rs v0.2.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.50s
[INFO] running `Command { std: "docker" "inspect" "845eec5ff86d4a9890b186dda388e5aa7b25d7c444645bc520269413af5a1fd9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "845eec5ff86d4a9890b186dda388e5aa7b25d7c444645bc520269413af5a1fd9", kill_on_drop: false }`
[INFO] [stdout] 845eec5ff86d4a9890b186dda388e5aa7b25d7c444645bc520269413af5a1fd9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:98afbf2d16093dec2546ff8915fddc74e65664aa03fc460b3712b1c2c54a33e4" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-01-20" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] bc68930dbbfa05bc173fc7e0219d0971be3ecbf31cc8354e755126ae76aea4dd
[INFO] running `Command { std: "docker" "start" "-a" "bc68930dbbfa05bc173fc7e0219d0971be3ecbf31cc8354e755126ae76aea4dd", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ev3dev_rs-32704c12102e338e)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests ev3dev_rs
[INFO] [stdout] 
[INFO] [stdout] running 21 tests
[INFO] [stdout] test src/pupdevices/color_sensor.rs - pupdevices::color_sensor::ColorSensor::raw_rgb (line 69) - compile ... FAILED
[INFO] [stdout] test src/lib.rs - (line 78) - compile ... FAILED
[INFO] [stdout] test src/pupdevices/touch_sensor.rs - pupdevices::touch_sensor::TouchSensor (line 11) - compile ... FAILED
[INFO] [stdout] test src/pupdevices/motor.rs - pupdevices::motor::Motor::new (line 57) - compile ... FAILED
[INFO] [stdout] test src/lib.rs - (line 42) - compile ... FAILED
[INFO] [stdout] test src/pupdevices/ultrasonic_sensor.rs - pupdevices::ultrasonic_sensor::UltrasonicSensor (line 11) - compile ... FAILED
[INFO] [stdout] test src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_1 (line 86) ... FAILED
[INFO] [stdout] test src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_3 (line 120) - compile ... FAILED
[INFO] [stdout] test src/lib.rs - (line 6) - compile ... FAILED
[INFO] [stdout] test src/robotics/drive_base.rs - robotics::drive_base::DriveBase<'a>::with_gyros (line 147) - compile ... FAILED
[INFO] [stdout] test src/robotics/gyro_controller.rs - robotics::gyro_controller::GyroController<'a>::new (line 39) - compile ... FAILED
[INFO] [stdout] test src/pupdevices/gyro_sensor.rs - pupdevices::gyro_sensor::GyroSensor (line 11) - compile ... FAILED
[INFO] [stdout] test src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_4 (line 137) - compile ... FAILED
[INFO] [stdout] test src/robotics/drive_base.rs - robotics::drive_base::DriveBase<'a>::with_gyro (line 116) - compile ... FAILED
[INFO] [stdout] test src/tools.rs - tools::join (line 12) ... FAILED
[INFO] [stdout] test src/pupdevices/gyro_sensor.rs - pupdevices::gyro_sensor::GyroSensor::heading_and_velocity (line 69) - compile ... FAILED
[INFO] [stdout] test src/robotics/gyro_controller.rs - robotics::gyro_controller::GyroController (line 14) ... FAILED
[INFO] [stdout] test src/tools.rs - tools::select (line 26) ... FAILED
[INFO] [stdout] test src/pupdevices/color_sensor.rs - pupdevices::color_sensor::ColorSensor (line 12) - compile ... FAILED
[INFO] [stdout] test src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_2 (line 103) ... FAILED
[INFO] [stdout] test src/robotics/drive_base.rs - robotics::drive_base::DriveBase (line 19) - compile ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- src/pupdevices/color_sensor.rs - pupdevices::color_sensor::ColorSensor::raw_rgb (line 69) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `sensor` in this scope
[INFO] [stdout]   --> src/pupdevices/color_sensor.rs:70:17
[INFO] [stdout]    |
[INFO] [stdout] 70 | let (r, g, b) = sensor.raw_rgb()?;
[INFO] [stdout]    |                 ^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - (line 78) stdout ----
[INFO] [stdout] error: expected `;`, found keyword `use`
[INFO] [stdout]   --> src/lib.rs:83:51
[INFO] [stdout]    |
[INFO] [stdout] 83 | use ev3dev_rs::parameters::{MotorPort, SensorPort}
[INFO] [stdout]    |                                                   ^ help: add `;` here
[INFO] [stdout] 84 | use ev3dev_rs::{join, select};
[INFO] [stdout]    | --- unexpected token
[INFO] [stdout] 
[INFO] [stdout] error: expected `;`, found `Ok`
[INFO] [stdout]    --> src/lib.rs:109:69
[INFO] [stdout]     |
[INFO] [stdout] 109 |     select!(drive.turn(90), attachment_motor.run_until_stalled(45))?
[INFO] [stdout]     |                                                                     ^ help: add `;` here
[INFO] [stdout] 110 |
[INFO] [stdout] 111 |     Ok(())
[INFO] [stdout]     |     -- unexpected token
[INFO] [stdout] 
[INFO] [stdout] error: The #[tokio::main] macro requires rt or rt-multi-thread.
[INFO] [stdout]   --> src/lib.rs:86:1
[INFO] [stdout]    |
[INFO] [stdout] 86 | #[tokio::main]
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the attribute macro `tokio::main` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error[E0601]: `main` function not found in crate `rust_out`
[INFO] [stdout]    --> src/lib.rs:112:2
[INFO] [stdout]     |
[INFO] [stdout] 112 | }
[INFO] [stdout]     |  ^ consider adding a `main` function to `src/lib.rs`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0601`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/touch_sensor.rs - pupdevices::touch_sensor::TouchSensor (line 11) stdout ----
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/touch_sensor.rs:16:53
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_touch_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------ this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 16 | let touch_sensor = TouchSensor::new(SensorPort::In1)?;
[INFO] [stdout]    |                                                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_touch_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::TouchSensor;
[INFO] [stdout] ...
[INFO] [stdout] 18 | println!("Is the sensor pressed? : {}", if touch_sensor.pressed()? {"Yes"} else {"No"});
[INFO] [stdout] 19 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/touch_sensor.rs:18:66
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_touch_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------ this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 18 | println!("Is the sensor pressed? : {}", if touch_sensor.pressed()? {"Yes"} else {"No"});
[INFO] [stdout]    |                                                                  ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_touch_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::TouchSensor;
[INFO] [stdout] ...
[INFO] [stdout] 18 | println!("Is the sensor pressed? : {}", if touch_sensor.pressed()? {"Yes"} else {"No"});
[INFO] [stdout] 19 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/motor.rs - pupdevices::motor::Motor::new (line 57) stdout ----
[INFO] [stdout] error[E0599]: no method named `reset` found for enum `Result<T, E>` in the current scope
[INFO] [stdout]    --> src/pupdevices/motor.rs:63:7
[INFO] [stdout]     |
[INFO] [stdout]  63 | motor.reset()?;
[INFO] [stdout]     |       ^^^^^ method not found in `Result<Motor, Ev3Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: the method `reset` exists on the type `Motor`
[INFO] [stdout]    --> src/pupdevices/motor.rs:160:5
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub fn reset(&self) -> Ev3Result<()> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: consider using `Result::expect` to unwrap the `Motor` value, panicking if the value is a `Result::Err`
[INFO] [stdout]     |
[INFO] [stdout]  63 | motor.expect("REASON").reset()?;
[INFO] [stdout]     |      +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `run_target` found for enum `Result<T, E>` in the current scope
[INFO] [stdout]    --> src/pupdevices/motor.rs:64:7
[INFO] [stdout]     |
[INFO] [stdout]  64 | motor.run_target(300, 360)?;
[INFO] [stdout]     |       ^^^^^^^^^^ method not found in `Result<Motor, Ev3Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: the method `run_target` exists on the type `Motor`
[INFO] [stdout]    --> src/pupdevices/motor.rs:223:5
[INFO] [stdout]     |
[INFO] [stdout] 223 |     pub async fn run_target(&self, speed: i32, target_angle: i32) -> Ev3Result<()> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: consider using `Result::expect` to unwrap the `Motor` value, panicking if the value is a `Result::Err`
[INFO] [stdout]     |
[INFO] [stdout]  64 | motor.expect("REASON").run_target(300, 360)?;
[INFO] [stdout]     |      +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 2 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - (line 42) stdout ----
[INFO] [stdout] error: expected `;`, found `#`
[INFO] [stdout]   --> src/lib.rs:47:50
[INFO] [stdout]    |
[INFO] [stdout] 47 | use ev3dev_rs::parameters::{MotorPort, MotorPort}
[INFO] [stdout]    |                                                  ^ help: add `;` here
[INFO] [stdout] 48 |
[INFO] [stdout] 49 | #[tokio::main]
[INFO] [stdout]    | - unexpected token
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `MotorPort` is defined multiple times
[INFO] [stdout]   --> src/lib.rs:47:40
[INFO] [stdout]    |
[INFO] [stdout] 47 | use ev3dev_rs::parameters::{MotorPort, MotorPort}
[INFO] [stdout]    |                             ---------  ^^^^^^^^^ `MotorPort` reimported here
[INFO] [stdout]    |                             |
[INFO] [stdout]    |                             previous import of the type `MotorPort` here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MotorPort` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] error: The #[tokio::main] macro requires rt or rt-multi-thread.
[INFO] [stdout]   --> src/lib.rs:49:1
[INFO] [stdout]    |
[INFO] [stdout] 49 | #[tokio::main]
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the attribute macro `tokio::main` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error[E0601]: `main` function not found in crate `rust_out`
[INFO] [stdout]   --> src/lib.rs:71:2
[INFO] [stdout]    |
[INFO] [stdout] 71 | }
[INFO] [stdout]    |  ^ consider adding a `main` function to `src/lib.rs`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0252, E0601.
[INFO] [stdout] For more information about an error, try `rustc --explain E0252`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/ultrasonic_sensor.rs - pupdevices::ultrasonic_sensor::UltrasonicSensor (line 11) stdout ----
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/ultrasonic_sensor.rs:16:63
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_ultrasonic_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ----------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 16 | let ultrasonic_sensor = UltrasonicSensor::new(SensorPort::In1)?;
[INFO] [stdout]    |                                                               ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_ultrasonic_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::UltrasonicSensor;
[INFO] [stdout] ...
[INFO] [stdout] 19 | println!("Distance (cm): {}", ultrasonic_sensor.distance_cm()?);
[INFO] [stdout] 20 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/ultrasonic_sensor.rs:18:62
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_ultrasonic_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ----------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 18 | println!("Distance (in): {}", ultrasonic_sensor.distance_in()?);
[INFO] [stdout]    |                                                              ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_ultrasonic_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::UltrasonicSensor;
[INFO] [stdout] ...
[INFO] [stdout] 19 | println!("Distance (cm): {}", ultrasonic_sensor.distance_cm()?);
[INFO] [stdout] 20 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/ultrasonic_sensor.rs:19:62
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_ultrasonic_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ----------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 19 | println!("Distance (cm): {}", ultrasonic_sensor.distance_cm()?);
[INFO] [stdout]    |                                                              ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_ultrasonic_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::UltrasonicSensor;
[INFO] [stdout] ...
[INFO] [stdout] 19 | println!("Distance (cm): {}", ultrasonic_sensor.distance_cm()?);
[INFO] [stdout] 20 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_1 (line 86) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `infrared_sensor` in this scope
[INFO] [stdout]   --> src/pupdevices/infrared_sensor.rs:87:27
[INFO] [stdout]    |
[INFO] [stdout] 87 | let (heading, distance) = infrared_sensor.seek_channel_1()?;
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_3 (line 120) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `infrared_sensor` in this scope
[INFO] [stdout]    --> src/pupdevices/infrared_sensor.rs:121:27
[INFO] [stdout]     |
[INFO] [stdout] 121 | let (heading, distance) = infrared_sensor.seek_channel_3()?;
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - (line 6) stdout ----
[INFO] [stdout] error: expected `;`, found `#`
[INFO] [stdout]   --> src/lib.rs:12:61
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ev3dev_rs::parameters::{MotorPort, MotorPort, Direction}
[INFO] [stdout]    |                                                             ^ help: add `;` here
[INFO] [stdout] 13 |
[INFO] [stdout] 14 | #[tokio::main]
[INFO] [stdout]    | - unexpected token
[INFO] [stdout] 
[INFO] [stdout] error[E0252]: the name `MotorPort` is defined multiple times
[INFO] [stdout]   --> src/lib.rs:12:40
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ev3dev_rs::parameters::{MotorPort, MotorPort, Direction}
[INFO] [stdout]    |                             ---------  ^^^^^^^^^--
[INFO] [stdout]    |                             |          |
[INFO] [stdout]    |                             |          `MotorPort` reimported here
[INFO] [stdout]    |                             |          help: remove unnecessary import
[INFO] [stdout]    |                             previous import of the type `MotorPort` here
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MotorPort` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] error: The #[tokio::main] macro requires rt or rt-multi-thread.
[INFO] [stdout]   --> src/lib.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | #[tokio::main]
[INFO] [stdout]    | ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the attribute macro `tokio::main` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error[E0601]: `main` function not found in crate `rust_out`
[INFO] [stdout]   --> src/lib.rs:36:2
[INFO] [stdout]    |
[INFO] [stdout] 36 | }
[INFO] [stdout]    |  ^ consider adding a `main` function to `src/lib.rs`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0252, E0601.
[INFO] [stdout] For more information about an error, try `rustc --explain E0252`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/robotics/drive_base.rs - robotics::drive_base::DriveBase<'a>::with_gyros (line 147) stdout ----
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:155:68
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 155 | let left = Motor::new(MotorPort::OutA, Direction::CounterClockwise)?;
[INFO] [stdout]     |                                                                    ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 148 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 149 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 167 | drive.use_gyro(true)?;
[INFO] [stdout] 168 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:157:69
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 157 | let right = Motor::new(MotorPort::OutD, Direction::CounterClockwise)?;
[INFO] [stdout]     |                                                                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 148 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 149 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 167 | drive.use_gyro(true)?;
[INFO] [stdout] 168 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:159:49
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 159 | let left_gyro = GyroSensor::new(SensorPort::In1)?;
[INFO] [stdout]     |                                                 ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 148 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 149 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 167 | drive.use_gyro(true)?;
[INFO] [stdout] 168 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:161:50
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 161 | let right_gyro = GyroSensor::new(SensorPort::In4)?;
[INFO] [stdout]     |                                                  ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 148 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 149 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 167 | drive.use_gyro(true)?;
[INFO] [stdout] 168 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:163:55
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 163 | let drive = DriveBase::new(&left, &right, 62.4, 130.5)?.with_gyros(vec![ &left_gyro, &right_gyro ])?;
[INFO] [stdout]     |                                                       ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 148 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 149 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 167 | drive.use_gyro(true)?;
[INFO] [stdout] 168 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:163:100
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 163 | let drive = DriveBase::new(&left, &right, 62.4, 130.5)?.with_gyros(vec![ &left_gyro, &right_gyro ])?;
[INFO] [stdout]     |                                                                                                    ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 148 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 149 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 167 | drive.use_gyro(true)?;
[INFO] [stdout] 168 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:167:21
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 167 | drive.use_gyro(true)?;
[INFO] [stdout]     |                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 148 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_147_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 149 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 167 | drive.use_gyro(true)?;
[INFO] [stdout] 168 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 7 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/robotics/gyro_controller.rs - robotics::gyro_controller::GyroController<'a>::new (line 39) stdout ----
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `SensorPort`
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:44:33
[INFO] [stdout]    |
[INFO] [stdout] 44 | let left_gyro = GyroSensor::new(SensorPort::In1)?;
[INFO] [stdout]    |                                 ^^^^^^^^^^ use of undeclared type `SensorPort`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]    |
[INFO] [stdout] 38 + use ev3dev_rs::parameters::SensorPort;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `SensorPort`
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:45:34
[INFO] [stdout]    |
[INFO] [stdout] 45 | let right_gyro = GyroSensor::new(SensorPort::In4)?;
[INFO] [stdout]    |                                  ^^^^^^^^^^ use of undeclared type `SensorPort`
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]    |
[INFO] [stdout] 38 + use ev3dev_rs::parameters::SensorPort;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `gyro1` in this scope
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:47:44
[INFO] [stdout]    |
[INFO] [stdout] 47 | let controller = GyroController::new(vec![&gyro1, &gyro2])?;
[INFO] [stdout]    |                                            ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `gyro2` in this scope
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:47:52
[INFO] [stdout]    |
[INFO] [stdout] 47 | let controller = GyroController::new(vec![&gyro1, &gyro2])?;
[INFO] [stdout]    |                                                    ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:44:49
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_39_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 44 | let left_gyro = GyroSensor::new(SensorPort::In1)?;
[INFO] [stdout]    |                                                 ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 40 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_39_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 41 | use ev3dev_rs::pupdevices::GyroSensor;
[INFO] [stdout] ...
[INFO] [stdout] 47 | let controller = GyroController::new(vec![&gyro1, &gyro2])?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:45:50
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_39_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 45 | let right_gyro = GyroSensor::new(SensorPort::In4)?;
[INFO] [stdout]    |                                                  ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 40 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_39_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 41 | use ev3dev_rs::pupdevices::GyroSensor;
[INFO] [stdout] ...
[INFO] [stdout] 47 | let controller = GyroController::new(vec![&gyro1, &gyro2])?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:47:59
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_39_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 47 | let controller = GyroController::new(vec![&gyro1, &gyro2])?;
[INFO] [stdout]    |                                                           ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 40 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_39_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 41 | use ev3dev_rs::pupdevices::GyroSensor;
[INFO] [stdout] ...
[INFO] [stdout] 47 | let controller = GyroController::new(vec![&gyro1, &gyro2])?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 7 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0425, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/gyro_sensor.rs - pupdevices::gyro_sensor::GyroSensor (line 11) stdout ----
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/gyro_sensor.rs:16:51
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_gyro_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ----------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 16 | let gyro_sensor = GyroSensor::new(SensorPort::In1)?;
[INFO] [stdout]    |                                                   ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_gyro_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::GyroSensor;
[INFO] [stdout] ...
[INFO] [stdout] 21 | println!("Tilt Velocity: {}", gyro_sensor.tilt_velocity()?);
[INFO] [stdout] 22 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/gyro_sensor.rs:18:46
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_gyro_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ----------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 18 | println!("Heading: {}", gyro_sensor.heading()?);
[INFO] [stdout]    |                                              ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_gyro_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::GyroSensor;
[INFO] [stdout] ...
[INFO] [stdout] 21 | println!("Tilt Velocity: {}", gyro_sensor.tilt_velocity()?);
[INFO] [stdout] 22 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `rate` found for struct `GyroSensor` in the current scope
[INFO] [stdout]   --> src/pupdevices/gyro_sensor.rs:19:38
[INFO] [stdout]    |
[INFO] [stdout] 19 | println!("Velocity: {}", gyro_sensor.rate()?);
[INFO] [stdout]    |                                      ^^^^ method not found in `GyroSensor`
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/gyro_sensor.rs:20:40
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_gyro_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ----------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 20 | println!("Tilt: {}", gyro_sensor.tilt()?);
[INFO] [stdout]    |                                        ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_gyro_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::GyroSensor;
[INFO] [stdout] ...
[INFO] [stdout] 21 | println!("Tilt Velocity: {}", gyro_sensor.tilt_velocity()?);
[INFO] [stdout] 22 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/gyro_sensor.rs:21:58
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_gyro_sensor_rs_11_0() {
[INFO] [stdout]    |                                      ----------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 21 | println!("Tilt Velocity: {}", gyro_sensor.tilt_velocity()?);
[INFO] [stdout]    |                                                          ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 12 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_gyro_sensor_rs_11_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 13 | use ev3dev_rs::pupdevices::GyroSensor;
[INFO] [stdout] ...
[INFO] [stdout] 21 | println!("Tilt Velocity: {}", gyro_sensor.tilt_velocity()?);
[INFO] [stdout] 22 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0599.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_4 (line 137) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `infrared_sensor` in this scope
[INFO] [stdout]    --> src/pupdevices/infrared_sensor.rs:138:27
[INFO] [stdout]     |
[INFO] [stdout] 138 | let (heading, distance) = infrared_sensor.seek_channel_4()?;
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/robotics/drive_base.rs - robotics::drive_base::DriveBase<'a>::with_gyro (line 116) stdout ----
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:124:68
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 124 | let left = Motor::new(MotorPort::OutA, Direction::CounterClockwise)?;
[INFO] [stdout]     |                                                                    ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 117 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 118 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 134 | drive.use_gyro(true)?;
[INFO] [stdout] 135 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:126:69
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 126 | let right = Motor::new(MotorPort::OutD, Direction::CounterClockwise)?;
[INFO] [stdout]     |                                                                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 117 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 118 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 134 | drive.use_gyro(true)?;
[INFO] [stdout] 135 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:128:44
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 128 | let gyro = GyroSensor::new(SensorPort::In1)?;
[INFO] [stdout]     |                                            ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 117 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 118 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 134 | drive.use_gyro(true)?;
[INFO] [stdout] 135 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:130:55
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 130 | let drive = DriveBase::new(&left, &right, 62.4, 130.5)?.with_gyro(&gyro)?;
[INFO] [stdout]     |                                                       ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 117 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stderr] error: doctest failed, to rerun pass `--doc`
[INFO] [stdout] 118 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 134 | drive.use_gyro(true)?;
[INFO] [stdout] 135 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:130:73
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 130 | let drive = DriveBase::new(&left, &right, 62.4, 130.5)?.with_gyro(&gyro)?;
[INFO] [stdout]     |                                                                         ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 117 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 118 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 134 | drive.use_gyro(true)?;
[INFO] [stdout] 135 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]    --> src/robotics/drive_base.rs:134:21
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() {
[INFO] [stdout]     |                                      --------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 134 | drive.use_gyro(true)?;
[INFO] [stdout]     |                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]     |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]     |
[INFO] [stdout] 117 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_116_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 118 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 134 | drive.use_gyro(true)?;
[INFO] [stdout] 135 +     Ok(())
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/tools.rs - tools::join (line 12) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `drive` in this scope
[INFO] [stdout]   --> src/tools.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | join!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    |       ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `attachment_motor` in this scope
[INFO] [stdout]   --> src/tools.rs:15:28
[INFO] [stdout]    |
[INFO] [stdout] 15 | join!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/tools.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_tools_rs_12_0() {
[INFO] [stdout]    |                                      ------------------------------------ this is not `async`
[INFO] [stdout] 14 | use ev3dev_rs::join;
[INFO] [stdout] 15 | join!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::try_join` which comes from the expansion of the macro `join` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/tools.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | join!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::try_join` which comes from the expansion of the macro `join` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/tools.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | join!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::try_join` which comes from the expansion of the macro `join` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/tools.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | join!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::try_join` which comes from the expansion of the macro `join` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/tools.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | join!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::try_join` which comes from the expansion of the macro `join` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 7 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0425, E0728.
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/gyro_sensor.rs - pupdevices::gyro_sensor::GyroSensor::heading_and_velocity (line 69) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `sensor` in this scope
[INFO] [stdout]   --> src/pupdevices/gyro_sensor.rs:70:27
[INFO] [stdout]    |
[INFO] [stdout] 70 | let (heading, velocity) = sensor.heading_and_velocity()?;
[INFO] [stdout]    |                           ^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `sensor` in this scope
[INFO] [stdout]   --> src/pupdevices/gyro_sensor.rs:71:21
[INFO] [stdout]    |
[INFO] [stdout] 71 | assert_eq!(heading, sensor.heading()?);
[INFO] [stdout]    |                     ^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `sensor` in this scope
[INFO] [stdout]   --> src/pupdevices/gyro_sensor.rs:72:22
[INFO] [stdout]    |
[INFO] [stdout] 72 | assert_eq!(velocity, sensor.angular_velocity()?);
[INFO] [stdout]    |                      ^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/robotics/gyro_controller.rs - robotics::gyro_controller::GyroController (line 14) stdout ----
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:20:45
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 20 | let gyro1 = GyroSensor::new(SensorPort::In1)?;
[INFO] [stdout]    |                                             ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 15 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 16 | use ev3dev_rs::robotics::GyroController;
[INFO] [stdout] ...
[INFO] [stdout] 29 | println!("Angular Velocity: {}", angular_velocity);
[INFO] [stdout] 30 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:21:45
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 21 | let gyro2 = GyroSensor::new(SensorPort::In2)?;
[INFO] [stdout]    |                                             ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 15 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 16 | use ev3dev_rs::robotics::GyroController;
[INFO] [stdout] ...
[INFO] [stdout] 29 | println!("Angular Velocity: {}", angular_velocity);
[INFO] [stdout] 30 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:23:43
[INFO] [stdout]    |
[INFO] [stdout] 23 | let controller = GyroController::new(vec![gyro1, gyro2])?;
[INFO] [stdout]    |                                           ^^^^^ expected `&GyroSensor`, found `GyroSensor`
[INFO] [stdout]    |
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]    |
[INFO] [stdout] 23 | let controller = GyroController::new(vec![&gyro1, gyro2])?;
[INFO] [stdout]    |                                           +
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:23:57
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 23 | let controller = GyroController::new(vec![gyro1, gyro2])?;
[INFO] [stdout]    |                                                         ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 15 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 16 | use ev3dev_rs::robotics::GyroController;
[INFO] [stdout] ...
[INFO] [stdout] 29 | println!("Angular Velocity: {}", angular_velocity);
[INFO] [stdout] 30 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:25:35
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 25 | let heading = controller.heading()?;
[INFO] [stdout]    |                                   ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 15 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 16 | use ev3dev_rs::robotics::GyroController;
[INFO] [stdout] ...
[INFO] [stdout] 29 | println!("Angular Velocity: {}", angular_velocity);
[INFO] [stdout] 30 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/gyro_controller.rs:26:53
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 26 | let angular_velocity = controller.angular_velocity()?;
[INFO] [stdout]    |                                                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 15 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_gyro_controller_rs_14_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 16 | use ev3dev_rs::robotics::GyroController;
[INFO] [stdout] ...
[INFO] [stdout] 29 | println!("Angular Velocity: {}", angular_velocity);
[INFO] [stdout] 30 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/tools.rs - tools::select (line 26) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `drive` in this scope
[INFO] [stdout]   --> src/tools.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | select!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    |         ^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `attachment_motor` in this scope
[INFO] [stdout]   --> src/tools.rs:29:30
[INFO] [stdout]    |
[INFO] [stdout] 29 | select!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/tools.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_tools_rs_26_0() {
[INFO] [stdout]    |                                      ------------------------------------ this is not `async`
[INFO] [stdout] 28 | use ev3dev_rs::select;
[INFO] [stdout] 29 | select!(drive.straight(100), attachment_motor.run_until_stalled(-45))?;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `select` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0425, E0728.
[INFO] [stdout] For more information about an error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/color_sensor.rs - pupdevices::color_sensor::ColorSensor (line 12) stdout ----
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/color_sensor.rs:17:53
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------ this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 17 | let color_sensor = ColorSensor::new(SensorPort::In1)?;
[INFO] [stdout]    |                                                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 13 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 14 | use ev3dev_rs::pupdevices::ColorSensor;
[INFO] [stdout] ...
[INFO] [stdout] 26 | println!("blue: {}", b);
[INFO] [stdout] 27 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/color_sensor.rs:19:68
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------ this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 19 | println!("Reflected light intensity: {}", color_sensor.reflection()?);
[INFO] [stdout]    |                                                                    ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 13 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 14 | use ev3dev_rs::pupdevices::ColorSensor;
[INFO] [stdout] ...
[INFO] [stdout] 26 | println!("blue: {}", b);
[INFO] [stdout] 27 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/color_sensor.rs:20:63
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------ this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 20 | println!("Ambient light intensity: {}", color_sensor.ambient()?);
[INFO] [stdout]    |                                                               ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 13 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 14 | use ev3dev_rs::pupdevices::ColorSensor;
[INFO] [stdout] ...
[INFO] [stdout] 26 | println!("blue: {}", b);
[INFO] [stdout] 27 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/color_sensor.rs:21:51
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------ this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 21 | println!("Current color: {}", color_sensor.color()?);
[INFO] [stdout]    |                                                   ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 13 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 14 | use ev3dev_rs::pupdevices::ColorSensor;
[INFO] [stdout] ...
[INFO] [stdout] 26 | println!("blue: {}", b);
[INFO] [stdout] 27 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/pupdevices/color_sensor.rs:23:39
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() {
[INFO] [stdout]    |                                      ------------------------------------------------------ this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 23 | let (r, g, b) = color_sensor.raw_rgb()?;
[INFO] [stdout]    |                                       ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 13 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_pupdevices_color_sensor_rs_12_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 14 | use ev3dev_rs::pupdevices::ColorSensor;
[INFO] [stdout] ...
[INFO] [stdout] 26 | println!("blue: {}", b);
[INFO] [stdout] 27 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_2 (line 103) stdout ----
[INFO] [stdout] error[E0425]: cannot find value `infrared_sensor` in this scope
[INFO] [stdout]    --> src/pupdevices/infrared_sensor.rs:104:27
[INFO] [stdout]     |
[INFO] [stdout] 104 | let (heading, distance) = infrared_sensor.seek_channel_2()?;
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/robotics/drive_base.rs - robotics::drive_base::DriveBase (line 19) stdout ----
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/robotics/drive_base.rs:46:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this is not `async`
[INFO] [stdout] ...
[INFO] [stdout] 46 | drive.straight(500).await?;
[INFO] [stdout]    |                     ^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]   --> src/robotics/drive_base.rs:47:16
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this is not `async`
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout]    |                ^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:25:68
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 25 | let left = Motor::new(MotorPort::OutA, Direction::CounterClockwise)?;
[INFO] [stdout]    |                                                                    ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 20 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 21 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:26:69
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 26 | let right = Motor::new(MotorPort::OutD, Direction::CounterClockwise)?;
[INFO] [stdout]    |                                                                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 20 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 21 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:29:55
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 29 | let drive = DriveBase::new(&left, &right, 62.4, 130.5)?;
[INFO] [stdout]    |                                                       ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 20 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 21 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:32:44
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 32 | let gyro = GyroSensor::new(SensorPort::In1)?;
[INFO] [stdout]    |                                            ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 20 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 21 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:34:55
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 34 | let drive = DriveBase::new(&left, &right, 62.4, 130.5)?.with_gyro(&gyro)?;
[INFO] [stdout]    |                                                       ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 20 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 21 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:34:73
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 34 | let drive = DriveBase::new(&left, &right, 62.4, 130.5)?.with_gyro(&gyro)?;
[INFO] [stdout]    |                                                                         ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 20 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 21 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:37:21
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 37 | drive.use_gyro(true)?;
[INFO] [stdout]    |                     ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 20 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 21 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be applied to values that implement `Try`
[INFO] [stdout]   --> src/robotics/drive_base.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | drive.set_straight_speed(600)?;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `()`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the nightly-only, unstable trait `Try` is not implemented for `()`
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:40:30
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 40 | drive.set_straight_speed(600)?;
[INFO] [stdout]    |                              ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used in a function that returns `Result` or `Option` (or another type that implements `FromResidual`)
[INFO] [stdout]   --> src/robotics/drive_base.rs:44:34
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() {
[INFO] [stdout]    |                                      -------------------------------------------------- this function should return `Result` or `Option` to accept `?`
[INFO] [stdout] ...
[INFO] [stdout] 44 | drive.set_stop_action(Stop::Hold)?;
[INFO] [stdout]    |                                  ^ cannot use the `?` operator in a function that returns `()`
[INFO] [stdout]    |
[INFO] [stdout] help: consider adding return type
[INFO] [stdout]    |
[INFO] [stdout] 20 ~ fn main() { #[allow(non_snake_case)] fn _doctest_main_src_robotics_drive_base_rs_19_0() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout] 21 | use ev3dev_rs::parameters::{Direction, MotorPort, SensorPort, Stop};
[INFO] [stdout] ...
[INFO] [stdout] 47 | drive.turn(90).await?;
[INFO] [stdout] 48 +     Ok(())
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 12 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0728.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     src/lib.rs - (line 42)
[INFO] [stdout]     src/lib.rs - (line 6)
[INFO] [stdout]     src/lib.rs - (line 78)
[INFO] [stdout]     src/pupdevices/color_sensor.rs - pupdevices::color_sensor::ColorSensor (line 12)
[INFO] [stdout]     src/pupdevices/color_sensor.rs - pupdevices::color_sensor::ColorSensor::raw_rgb (line 69)
[INFO] [stdout]     src/pupdevices/gyro_sensor.rs - pupdevices::gyro_sensor::GyroSensor (line 11)
[INFO] [stdout]     src/pupdevices/gyro_sensor.rs - pupdevices::gyro_sensor::GyroSensor::heading_and_velocity (line 69)
[INFO] [stdout]     src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_1 (line 86)
[INFO] [stdout]     src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_2 (line 103)
[INFO] [stdout]     src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_3 (line 120)
[INFO] [stdout]     src/pupdevices/infrared_sensor.rs - pupdevices::infrared_sensor::InfraredSensor::seek_channel_4 (line 137)
[INFO] [stdout]     src/pupdevices/motor.rs - pupdevices::motor::Motor::new (line 57)
[INFO] [stdout]     src/pupdevices/touch_sensor.rs - pupdevices::touch_sensor::TouchSensor (line 11)
[INFO] [stdout]     src/pupdevices/ultrasonic_sensor.rs - pupdevices::ultrasonic_sensor::UltrasonicSensor (line 11)
[INFO] [stdout]     src/robotics/drive_base.rs - robotics::drive_base::DriveBase (line 19)
[INFO] [stdout]     src/robotics/drive_base.rs - robotics::drive_base::DriveBase<'a>::with_gyro (line 116)
[INFO] [stdout]     src/robotics/drive_base.rs - robotics::drive_base::DriveBase<'a>::with_gyros (line 147)
[INFO] [stdout]     src/robotics/gyro_controller.rs - robotics::gyro_controller::GyroController (line 14)
[INFO] [stdout]     src/robotics/gyro_controller.rs - robotics::gyro_controller::GyroController<'a>::new (line 39)
[INFO] [stdout]     src/tools.rs - tools::join (line 12)
[INFO] [stdout]     src/tools.rs - tools::select (line 26)
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 21 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.70s; merged doctests compilation took 0.28s
[INFO] running `Command { std: "docker" "inspect" "bc68930dbbfa05bc173fc7e0219d0971be3ecbf31cc8354e755126ae76aea4dd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bc68930dbbfa05bc173fc7e0219d0971be3ecbf31cc8354e755126ae76aea4dd", kill_on_drop: false }`
[INFO] [stdout] bc68930dbbfa05bc173fc7e0219d0971be3ecbf31cc8354e755126ae76aea4dd
