[INFO] cloning repository https://github.com/Atropa-Solanaceae/rusty_injection
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Atropa-Solanaceae/rusty_injection" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAtropa-Solanaceae%2Frusty_injection", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAtropa-Solanaceae%2Frusty_injection'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 32312bdbbaa337c0e5a60e96972e93a636e46b32
[INFO] checking Atropa-Solanaceae/rusty_injection against try#ddcf048784667508cd676fef4667f88ae15628a3 for pr-148271
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAtropa-Solanaceae%2Frusty_injection" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Atropa-Solanaceae/rusty_injection
[INFO] finished tweaking git repo https://github.com/Atropa-Solanaceae/rusty_injection
[INFO] tweaked toml for git repo https://github.com/Atropa-Solanaceae/rusty_injection written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Atropa-Solanaceae/rusty_injection on toolchain ddcf048784667508cd676fef4667f88ae15628a3
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ddcf048784667508cd676fef4667f88ae15628a3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Atropa-Solanaceae/rusty_injection 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" "+ddcf048784667508cd676fef4667f88ae15628a3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ddcf048784667508cd676fef4667f88ae15628a3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c99264c7e8b5eb519c6c28399fd3ac20f22aa699dce2eaa5aa5e2fd3beac9873
[INFO] running `Command { std: "docker" "start" "-a" "c99264c7e8b5eb519c6c28399fd3ac20f22aa699dce2eaa5aa5e2fd3beac9873", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c99264c7e8b5eb519c6c28399fd3ac20f22aa699dce2eaa5aa5e2fd3beac9873", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c99264c7e8b5eb519c6c28399fd3ac20f22aa699dce2eaa5aa5e2fd3beac9873", kill_on_drop: false }`
[INFO] [stdout] c99264c7e8b5eb519c6c28399fd3ac20f22aa699dce2eaa5aa5e2fd3beac9873
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ddcf048784667508cd676fef4667f88ae15628a3" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 03660ca5991264989adf60e68af494559c2ede9822074485a99c57ccc30b2ebe
[INFO] running `Command { std: "docker" "start" "-a" "03660ca5991264989adf60e68af494559c2ede9822074485a99c57ccc30b2ebe", kill_on_drop: false }`
[INFO] [stderr]    Compiling windows_x86_64_gnu v0.52.4
[INFO] [stderr]     Checking either v1.10.0
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking windows-targets v0.52.4
[INFO] [stderr]     Checking windows-result v0.1.0
[INFO] [stderr]     Checking windows-core v0.54.0
[INFO] [stderr]     Checking windows v0.54.0
[INFO] [stderr]     Checking sysinfo v0.30.7
[INFO] [stderr]     Checking threadless_injection v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `thiserror`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use thiserror::Error;
[INFO] [stdout]    |     ^^^^^^^^^ use of unresolved module or unlinked crate `thiserror`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `thiserror`, use `cargo add thiserror` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `log`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use log::{info, error};
[INFO] [stdout]    |     ^^^ use of unresolved module or unlinked crate `log`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `log`, use `cargo add log` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `clap`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use clap::Parser;
[INFO] [stdout]    |     ^^^^ use of unresolved module or unlinked crate `clap`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `clap`, use `cargo add clap` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `thiserror`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use thiserror::Error;
[INFO] [stdout]    |     ^^^^^^^^^ use of unresolved module or unlinked crate `thiserror`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `thiserror`, use `cargo add thiserror` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `log`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use log::{info, error};
[INFO] [stdout]    |     ^^^ use of unresolved module or unlinked crate `log`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `log`, use `cargo add log` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `clap`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use clap::Parser;
[INFO] [stdout]    |     ^^^^ use of unresolved module or unlinked crate `clap`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `clap`, use `cargo add clap` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `command` in this scope
[INFO] [stdout]   --> src/main.rs:43:3
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[command(author, version, about, long_about = None)]
[INFO] [stdout]    |   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `arg` in this scope
[INFO] [stdout]   --> src/main.rs:45:7
[INFO] [stdout]    |
[INFO] [stdout] 45 |     #[arg(short, long)]
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `command` in this scope
[INFO] [stdout]   --> src/main.rs:43:3
[INFO] [stdout]    |
[INFO] [stdout] 43 | #[command(author, version, about, long_about = None)]
[INFO] [stdout]    |   ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `from` in this scope
[INFO] [stdout]   --> src/main.rs:56:20
[INFO] [stdout]    |
[INFO] [stdout] 56 |     WindowsError(#[from] windows::core::Error),
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `arg` in this scope
[INFO] [stdout]   --> src/main.rs:45:7
[INFO] [stdout]    |
[INFO] [stdout] 45 |     #[arg(short, long)]
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `from` in this scope
[INFO] [stdout]   --> src/main.rs:56:20
[INFO] [stdout]    |
[INFO] [stdout] 56 |     WindowsError(#[from] windows::core::Error),
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `env_logger`
[INFO] [stdout]   --> src/main.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     env_logger::init();
[INFO] [stdout]    |     ^^^^^^^^^^ use of unresolved module or unlinked crate `env_logger`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `env_logger`, use `cargo add env_logger` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `env_logger`
[INFO] [stdout]   --> src/main.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     env_logger::init();
[INFO] [stdout]    |     ^^^^^^^^^^ use of unresolved module or unlinked crate `env_logger`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `env_logger`, use `cargo add env_logger` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `parse` found for struct `Args` in the current scope
[INFO] [stdout]   --> src/main.rs:61:22
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct Args {
[INFO] [stdout]    | ----------- function or associated item `parse` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     let args = Args::parse();
[INFO] [stdout]    |                      ^^^^^ function or associated item not found in `Args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `parse` found for struct `Args` in the current scope
[INFO] [stdout]   --> src/main.rs:61:22
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct Args {
[INFO] [stdout]    | ----------- function or associated item `parse` not found for this struct
[INFO] [stdout] ...
[INFO] [stdout] 61 |     let args = Args::parse();
[INFO] [stdout]    |                      ^^^^^ function or associated item not found in `Args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]   --> src/main.rs:65:60
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn main() -> Result<(), AppError> {
[INFO] [stdout]    |              -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 65 |     let amsi_module = unsafe { LoadLibraryA(s!("amsi.dll"))? };
[INFO] [stdout]    |                                ----------------------------^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]    |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]   --> src/main.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | enum AppError {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]   --> src/main.rs:68:73
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn main() -> Result<(), AppError> {
[INFO] [stdout]    |              -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 68 |     let h_process = unsafe { OpenProcess(PROCESS_ALL_ACCESS, false, pid)? };
[INFO] [stdout]    |                              -------------------------------------------^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]    |                              |
[INFO] [stdout]    |                              this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]    |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]   --> src/main.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | enum AppError {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]   --> src/main.rs:65:60
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn main() -> Result<(), AppError> {
[INFO] [stdout]    |              -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 65 |     let amsi_module = unsafe { LoadLibraryA(s!("amsi.dll"))? };
[INFO] [stdout]    |                                ----------------------------^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]    |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]   --> src/main.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | enum AppError {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]   --> src/main.rs:68:73
[INFO] [stdout]    |
[INFO] [stdout] 59 | fn main() -> Result<(), AppError> {
[INFO] [stdout]    |              -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 68 |     let h_process = unsafe { OpenProcess(PROCESS_ALL_ACCESS, false, pid)? };
[INFO] [stdout]    |                              -------------------------------------------^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]    |                              |
[INFO] [stdout]    |                              this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]    |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]   --> src/main.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | enum AppError {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:137:10
[INFO] [stdout]     |
[INFO] [stdout] 121 |   fn install_trampoline(h_process: HANDLE, address: *mut c_void, function_address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                                                    -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 131 | /         VirtualProtectEx(
[INFO] [stdout] 132 | |             h_process,
[INFO] [stdout] 133 | |             function_address,
[INFO] [stdout] 134 | |             trampoline.len(),
[INFO] [stdout] 135 | |             PAGE_READWRITE,
[INFO] [stdout] 136 | |             &mut old_protect,
[INFO] [stdout] 137 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:145:10
[INFO] [stdout]     |
[INFO] [stdout] 121 |   fn install_trampoline(h_process: HANDLE, address: *mut c_void, function_address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                                                    -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 139 | /         WriteProcessMemory(
[INFO] [stdout] 140 | |             h_process,
[INFO] [stdout] 141 | |             function_address,
[INFO] [stdout] 142 | |             trampoline.as_ptr() as _,
[INFO] [stdout] 143 | |             trampoline.len(),
[INFO] [stdout] 144 | |             Some(&mut number_bytes_written),
[INFO] [stdout] 145 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:153:10
[INFO] [stdout]     |
[INFO] [stdout] 121 |   fn install_trampoline(h_process: HANDLE, address: *mut c_void, function_address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                                                    -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 147 | /         VirtualProtectEx(
[INFO] [stdout] 148 | |             h_process,
[INFO] [stdout] 149 | |             function_address,
[INFO] [stdout] 150 | |             trampoline.len(),
[INFO] [stdout] 151 | |             PAGE_EXECUTE_READWRITE,
[INFO] [stdout] 152 | |             &mut old_protect,
[INFO] [stdout] 153 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:168:10
[INFO] [stdout]     |
[INFO] [stdout] 159 |   fn write_shellcode(h_process: HANDLE, address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                  -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 162 | /         WriteProcessMemory(
[INFO] [stdout] 163 | |             h_process, 
[INFO] [stdout] 164 | |             address, 
[INFO] [stdout] 165 | |             PATCH_SHELLCODE.as_ptr() as _, 
[INFO] [stdout] 166 | |             PATCH_SHELLCODE.len(), 
[INFO] [stdout] 167 | |             Some(&mut number_of_write)
[INFO] [stdout] 168 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:177:10
[INFO] [stdout]     |
[INFO] [stdout] 159 |   fn write_shellcode(h_process: HANDLE, address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                  -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 171 | /         WriteProcessMemory( 
[INFO] [stdout] 172 | |             h_process, 
[INFO] [stdout] 173 | |             shellcode_address as *mut c_void, 
[INFO] [stdout] 174 | |             SHELLCODE.as_ptr() as _, 
[INFO] [stdout] 175 | |             SHELLCODE.len(), 
[INFO] [stdout] 176 | |             Some(&mut number_of_write)
[INFO] [stdout] 177 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:186:10
[INFO] [stdout]     |
[INFO] [stdout] 159 |   fn write_shellcode(h_process: HANDLE, address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                  -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 180 | /         VirtualProtectEx(
[INFO] [stdout] 181 | |             h_process, 
[INFO] [stdout] 182 | |             address, 
[INFO] [stdout] 183 | |             SHELLCODE.len(), 
[INFO] [stdout] 184 | |             PAGE_EXECUTE_READWRITE, 
[INFO] [stdout] 185 | |             &mut old_protect
[INFO] [stdout] 186 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432, E0433, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:137:10
[INFO] [stdout]     |
[INFO] [stdout] 121 |   fn install_trampoline(h_process: HANDLE, address: *mut c_void, function_address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                                                    -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 131 | /         VirtualProtectEx(
[INFO] [stdout] 132 | |             h_process,
[INFO] [stdout] 133 | |             function_address,
[INFO] [stdout] 134 | |             trampoline.len(),
[INFO] [stdout] 135 | |             PAGE_READWRITE,
[INFO] [stdout] 136 | |             &mut old_protect,
[INFO] [stdout] 137 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:145:10
[INFO] [stdout]     |
[INFO] [stdout] 121 |   fn install_trampoline(h_process: HANDLE, address: *mut c_void, function_address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                                                    -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 139 | /         WriteProcessMemory(
[INFO] [stdout] 140 | |             h_process,
[INFO] [stdout] 141 | |             function_address,
[INFO] [stdout] 142 | |             trampoline.as_ptr() as _,
[INFO] [stdout] 143 | |             trampoline.len(),
[INFO] [stdout] 144 | |             Some(&mut number_bytes_written),
[INFO] [stdout] 145 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:153:10
[INFO] [stdout]     |
[INFO] [stdout] 121 |   fn install_trampoline(h_process: HANDLE, address: *mut c_void, function_address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                                                    -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 147 | /         VirtualProtectEx(
[INFO] [stdout] 148 | |             h_process,
[INFO] [stdout] 149 | |             function_address,
[INFO] [stdout] 150 | |             trampoline.len(),
[INFO] [stdout] 151 | |             PAGE_EXECUTE_READWRITE,
[INFO] [stdout] 152 | |             &mut old_protect,
[INFO] [stdout] 153 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `threadless_injection` (bin "threadless_injection" test) due to 16 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:168:10
[INFO] [stdout]     |
[INFO] [stdout] 159 |   fn write_shellcode(h_process: HANDLE, address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                  -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 162 | /         WriteProcessMemory(
[INFO] [stdout] 163 | |             h_process, 
[INFO] [stdout] 164 | |             address, 
[INFO] [stdout] 165 | |             PATCH_SHELLCODE.as_ptr() as _, 
[INFO] [stdout] 166 | |             PATCH_SHELLCODE.len(), 
[INFO] [stdout] 167 | |             Some(&mut number_of_write)
[INFO] [stdout] 168 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:177:10
[INFO] [stdout]     |
[INFO] [stdout] 159 |   fn write_shellcode(h_process: HANDLE, address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                  -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 171 | /         WriteProcessMemory( 
[INFO] [stdout] 172 | |             h_process, 
[INFO] [stdout] 173 | |             shellcode_address as *mut c_void, 
[INFO] [stdout] 174 | |             SHELLCODE.as_ptr() as _, 
[INFO] [stdout] 175 | |             SHELLCODE.len(), 
[INFO] [stdout] 176 | |             Some(&mut number_of_write)
[INFO] [stdout] 177 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `?` couldn't convert the error to `AppError`
[INFO] [stdout]    --> src/main.rs:186:10
[INFO] [stdout]     |
[INFO] [stdout] 159 |   fn write_shellcode(h_process: HANDLE, address: *mut c_void) -> Result<(), AppError> {
[INFO] [stdout]     |                                                                  -------------------- expected `AppError` because of this
[INFO] [stdout] ...
[INFO] [stdout] 180 | /         VirtualProtectEx(
[INFO] [stdout] 181 | |             h_process, 
[INFO] [stdout] 182 | |             address, 
[INFO] [stdout] 183 | |             SHELLCODE.len(), 
[INFO] [stdout] 184 | |             PAGE_EXECUTE_READWRITE, 
[INFO] [stdout] 185 | |             &mut old_protect
[INFO] [stdout] 186 | |         )?;
[INFO] [stdout]     | |         -^ the trait `From<windows_result::error::Error>` is not implemented for `AppError`
[INFO] [stdout]     | |_________|
[INFO] [stdout]     |           this can't be annotated with `?` because it has type `Result<_, windows_result::error::Error>`
[INFO] [stdout]     |
[INFO] [stdout] note: `AppError` needs to implement `From<windows_result::error::Error>`
[INFO] [stdout]    --> src/main.rs:50:1
[INFO] [stdout]     |
[INFO] [stdout]  50 | enum AppError {
[INFO] [stdout]     | ^^^^^^^^^^^^^
[INFO] [stdout]     = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432, E0433, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `threadless_injection` (bin "threadless_injection") due to 16 previous errors
[INFO] running `Command { std: "docker" "inspect" "03660ca5991264989adf60e68af494559c2ede9822074485a99c57ccc30b2ebe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "03660ca5991264989adf60e68af494559c2ede9822074485a99c57ccc30b2ebe", kill_on_drop: false }`
[INFO] [stdout] 03660ca5991264989adf60e68af494559c2ede9822074485a99c57ccc30b2ebe
