[INFO] fetching crate idiom-solitaire 0.1.0...
[INFO] checking idiom-solitaire-0.1.0 against master#39cb3386ddc6c71657418be28dbb3987eea4aa4b for pr-133536
[INFO] extracting crate idiom-solitaire 0.1.0 into /workspace/builds/worker-7-tc1/source
[INFO] validating manifest of crates.io crate idiom-solitaire 0.1.0 on toolchain 39cb3386ddc6c71657418be28dbb3987eea4aa4b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "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-7-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]      Locking 45 packages to latest compatible versions
[INFO] [stderr]       Adding itertools v0.9.0 (available: v0.13.0)
[INFO] [stderr]       Adding pathfinding v2.2.3 (available: v4.11.0)
[INFO] [stderr]       Adding pinyin v0.8.0 (available: v0.10.0)
[INFO] [stderr]       Adding rand v0.7.3 (available: v0.8.5)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "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-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] aa9f4dd897ba185a75c066104f8f347633dbcd8dfef233b442efd33e31009d77
[INFO] running `Command { std: "docker" "start" "-a" "aa9f4dd897ba185a75c066104f8f347633dbcd8dfef233b442efd33e31009d77", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "aa9f4dd897ba185a75c066104f8f347633dbcd8dfef233b442efd33e31009d77", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa9f4dd897ba185a75c066104f8f347633dbcd8dfef233b442efd33e31009d77", kill_on_drop: false }`
[INFO] [stdout] aa9f4dd897ba185a75c066104f8f347633dbcd8dfef233b442efd33e31009d77
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:4a844ea9eb2546a2d2c7022eacef16ef2e8229c7fbb2c7d4d55a9ceca922f72d" "/opt/rustwide/cargo-home/bin/cargo" "+39cb3386ddc6c71657418be28dbb3987eea4aa4b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f675f137ff745277d64acd96029a8637459accf13d1456987ee82e850722a8f7
[INFO] running `Command { std: "docker" "start" "-a" "f675f137ff745277d64acd96029a8637459accf13d1456987ee82e850722a8f7", kill_on_drop: false }`
[INFO] [stderr]    Compiling getrandom v0.1.16
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking either v1.13.0
[INFO] [stderr]    Compiling pinyin v0.8.0
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]     Checking fixedbitset v0.4.2
[INFO] [stderr]    Compiling syn v2.0.90
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking itertools v0.9.0
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand_pcg v0.2.1
[INFO] [stderr]     Checking csv-core v0.1.11
[INFO] [stderr]     Checking integer-sqrt v0.1.5
[INFO] [stderr]     Checking pathfinding v2.2.3
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling serde_derive v1.0.215
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking ppv-lite86 v0.2.20
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking serde v1.0.215
[INFO] [stderr]     Checking csv v1.3.1
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[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 trait `FromResidual<std::result::Result<Infallible, E>>` is implemented for `std::result::Result<T, F>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0412, E0635.
[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] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `idiom-solitaire` (lib) due to 9 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `idiom-solitaire` (lib test) due to 9 previous errors
[INFO] running `Command { std: "docker" "inspect" "f675f137ff745277d64acd96029a8637459accf13d1456987ee82e850722a8f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f675f137ff745277d64acd96029a8637459accf13d1456987ee82e850722a8f7", kill_on_drop: false }`
[INFO] [stdout] f675f137ff745277d64acd96029a8637459accf13d1456987ee82e850722a8f7
