[INFO] fetching crate idiom-solitaire 0.1.0...
[INFO] checking idiom-solitaire-0.1.0 against master#30f74ff0dc4d66debc8b50724c446f817e5f75f4 for pr-121848-1
[INFO] extracting crate idiom-solitaire 0.1.0 into /workspace/builds/worker-5-tc1/source
[INFO] validating manifest of crates.io crate idiom-solitaire 0.1.0 on toolchain 30f74ff0dc4d66debc8b50724c446f817e5f75f4
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+30f74ff0dc4d66debc8b50724c446f817e5f75f4" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate idiom-solitaire 0.1.0
[INFO] finished tweaking crates.io crate idiom-solitaire 0.1.0
[INFO] tweaked toml for crates.io crate idiom-solitaire 0.1.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+30f74ff0dc4d66debc8b50724c446f817e5f75f4" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+30f74ff0dc4d66debc8b50724c446f817e5f75f4" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded pathfinding v2.2.3
[INFO] [stderr]   Downloaded pinyin v0.8.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+30f74ff0dc4d66debc8b50724c446f817e5f75f4" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2daedfd361d0d4a1a5672381563641f7f8b5eaad6d0eb663f96a96e79ca7dfb4
[INFO] running `Command { std: "docker" "start" "-a" "2daedfd361d0d4a1a5672381563641f7f8b5eaad6d0eb663f96a96e79ca7dfb4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2daedfd361d0d4a1a5672381563641f7f8b5eaad6d0eb663f96a96e79ca7dfb4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2daedfd361d0d4a1a5672381563641f7f8b5eaad6d0eb663f96a96e79ca7dfb4", kill_on_drop: false }`
[INFO] [stdout] 2daedfd361d0d4a1a5672381563641f7f8b5eaad6d0eb663f96a96e79ca7dfb4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+30f74ff0dc4d66debc8b50724c446f817e5f75f4" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7a44de11a584a34c0a1b4e8537ef1d6e238fb6fcbb8f8b484c1e585031fca6a6
[INFO] running `Command { std: "docker" "start" "-a" "7a44de11a584a34c0a1b4e8537ef1d6e238fb6fcbb8f8b484c1e585031fca6a6", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]     Checking memchr v2.7.2
[INFO] [stderr]    Compiling pinyin v0.8.0
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]     Checking fixedbitset v0.4.2
[INFO] [stderr]     Checking itertools v0.9.0
[INFO] [stderr]     Checking integer-sqrt v0.1.5
[INFO] [stderr]     Checking serde v1.0.197
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking csv-core v0.1.11
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand_pcg v0.2.1
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking pathfinding v2.2.3
[INFO] [stderr]     Checking csv v1.3.0
[INFO] [stderr]     Checking idiom-solitaire v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]   --> src/errors.rs:23:24
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl From<std::option::NoneError> for Error {
[INFO] [stdout]    |                        ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]    |
[INFO] [stdout] help: there is an enum variant `crate::Error::NoneError`; try using the variant's enum
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl From<crate::Error> for Error {
[INFO] [stdout]    |           ~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]   --> src/errors.rs:23:24
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl From<std::option::NoneError> for Error {
[INFO] [stdout]    |                        ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]    |
[INFO] [stdout] help: there is an enum variant `crate::Error::NoneError`; try using the variant's enum
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl From<crate::Error> for Error {
[INFO] [stdout]    |           ~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]   --> src/errors.rs:24:29
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn from(_: std::option::NoneError) -> Self {
[INFO] [stdout]    |                             ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]    |
[INFO] [stdout] help: there is an enum variant `crate::Error::NoneError`; try using the variant's enum
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn from(_: crate::Error) -> Self {
[INFO] [stdout]    |                ~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0412]: cannot find type `NoneError` in module `std::option`
[INFO] [stdout]   --> src/errors.rs:24:29
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn from(_: std::option::NoneError) -> Self {
[INFO] [stdout]    |                             ^^^^^^^^^ not found in `std::option`
[INFO] [stdout]    |
[INFO] [stdout] help: there is an enum variant `crate::Error::NoneError`; try using the variant's enum
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn from(_: crate::Error) -> Self {
[INFO] [stdout]    |                ~~~~~~~~~~~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `try_trait`
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(try_trait)]
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0635]: unknown feature `try_trait`
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(try_trait)]
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]   --> src/solver/mod.rs:96:55
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn solve_random(&mut self, input: &str) -> Result<Idiom> {
[INFO] [stdout]    |     ------------------------------------------------------------ this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 96 |             let i = (0..s.len()).choose(&mut self.rng)?;
[INFO] [stdout]    |                                                       ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Idiom, errors::Error>`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Idiom, errors::Error>`
[INFO] [stdout]    = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]              <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]              <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]   --> src/solver/mod.rs:96:55
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn solve_random(&mut self, input: &str) -> Result<Idiom> {
[INFO] [stdout]    |     ------------------------------------------------------------ this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 96 |             let i = (0..s.len()).choose(&mut self.rng)?;
[INFO] [stdout]    |                                                       ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Idiom, errors::Error>`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Idiom, errors::Error>`
[INFO] [stdout]    = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]              <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]              <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:104:43
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub fn solve_target(&mut self, input: &str, target: &str) -> Result<Vec<Idiom>> {
[INFO] [stdout]     |     ------------------------------------------------------------------------------- this function returns a `Result`
[INFO] [stdout] 103 |         let first = Idiom::from(input);
[INFO] [stdout] 104 |         let target = target.chars().next()?;
[INFO] [stdout]     |                                           ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:104:43
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub fn solve_target(&mut self, input: &str, target: &str) -> Result<Vec<Idiom>> {
[INFO] [stdout]     |     ------------------------------------------------------------------------------- this function returns a `Result`
[INFO] [stdout] 103 |         let first = Idiom::from(input);
[INFO] [stdout] 104 |         let target = target.chars().next()?;
[INFO] [stdout]     |                                           ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:107:54
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub fn solve_target(&mut self, input: &str, target: &str) -> Result<Vec<Idiom>> {
[INFO] [stdout]     |     ------------------------------------------------------------------------------- this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 107 |             SolitaireMode::Tone => target.to_pinyin()?.with_tone().to_string(),
[INFO] [stdout]     |                                                      ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:108:55
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub fn solve_target(&mut self, input: &str, target: &str) -> Result<Vec<Idiom>> {
[INFO] [stdout]     |     ------------------------------------------------------------------------------- this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 108 |             SolitaireMode::Sound => target.to_pinyin()?.plain().to_string(),
[INFO] [stdout]     |                                                       ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:107:54
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub fn solve_target(&mut self, input: &str, target: &str) -> Result<Vec<Idiom>> {
[INFO] [stdout]     |     ------------------------------------------------------------------------------- this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 107 |             SolitaireMode::Tone => target.to_pinyin()?.with_tone().to_string(),
[INFO] [stdout]     |                                                      ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:108:55
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub fn solve_target(&mut self, input: &str, target: &str) -> Result<Vec<Idiom>> {
[INFO] [stdout]     |     ------------------------------------------------------------------------------- this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 108 |             SolitaireMode::Sound => target.to_pinyin()?.plain().to_string(),
[INFO] [stdout]     |                                                       ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:110:95
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub fn solve_target(&mut self, input: &str, target: &str) -> Result<Vec<Idiom>> {
[INFO] [stdout]     |     ------------------------------------------------------------------------------- this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 110 |         let result = bfs(&first, |p| self.successors(p), |p| self.get_key(&p.idiom) == target)?;
[INFO] [stdout]     |                                                                                               ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:110:95
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub fn solve_target(&mut self, input: &str, target: &str) -> Result<Vec<Idiom>> {
[INFO] [stdout]     |     ------------------------------------------------------------------------------- this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 110 |         let result = bfs(&first, |p| self.successors(p), |p| self.get_key(&p.idiom) == target)?;
[INFO] [stdout]     |                                                                                               ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Vec<Idiom>, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:133:57
[INFO] [stdout]     |
[INFO] [stdout] 114 |     pub fn solve_greedy(&mut self, input: &str) -> Result<Idiom> {
[INFO] [stdout]     |     ------------------------------------------------------------ this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 133 |         let s = self.state.get_mut(&self.get_key(input))?;
[INFO] [stdout]     |                                                         ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Idiom, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Idiom, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a method that returns `Result`
[INFO] [stdout]    --> src/solver/mod.rs:133:57
[INFO] [stdout]     |
[INFO] [stdout] 114 |     pub fn solve_greedy(&mut self, input: &str) -> Result<Idiom> {
[INFO] [stdout]     |     ------------------------------------------------------------ this function returns a `Result`
[INFO] [stdout] ...
[INFO] [stdout] 133 |         let s = self.state.get_mut(&self.get_key(input))?;
[INFO] [stdout]     |                                                         ^ use `.ok_or(...)?` to provide an error compatible with `std::result::Result<Idiom, errors::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `FromResidual<std::option::Option<Infallible>>` is not implemented for `std::result::Result<Idiom, errors::Error>`
[INFO] [stdout]     = help: the following other types implement trait `FromResidual<R>`:
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<Yeet<E>>>
[INFO] [stdout]               <std::result::Result<T, F> as FromResidual<std::result::Result<Infallible, E>>>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 9 previous errors
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0412, E0635.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 9 previous errors
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0412, E0635.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `idiom-solitaire` (lib test) due to 10 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `idiom-solitaire` (lib) due to 10 previous errors
[INFO] running `Command { std: "docker" "inspect" "7a44de11a584a34c0a1b4e8537ef1d6e238fb6fcbb8f8b484c1e585031fca6a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7a44de11a584a34c0a1b4e8537ef1d6e238fb6fcbb8f8b484c1e585031fca6a6", kill_on_drop: false }`
[INFO] [stdout] 7a44de11a584a34c0a1b4e8537ef1d6e238fb6fcbb8f8b484c1e585031fca6a6
