error[E0277]: `?` couldn't convert the error to `u8` --> $DIR/bad-interconversion.rs:6:20 | LL | fn result_to_result() -> Result { | --------------- expected `u8` because of this LL | Ok(Err(123_i32)?) | ^ the trait `From` is not implemented for `u8` | = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait = help: the following other types implement trait `From`: > > > > > > > > and 67 others = note: required because of the requirements on the impl of `FromResidual>` for `Result` error[E0277]: the `?` operator can only be used on `Result`s, not `Option`s, in a function that returns `Result` --> $DIR/bad-interconversion.rs:11:12 | LL | / fn option_to_result() -> Result { LL | | Some(3)?; | | ^ use `.ok_or(...)?` to provide an error compatible with `Result` LL | | LL | | Ok(10) LL | | } | |_- this function returns a `Result` | = help: the trait `FromResidual>` is not implemented for `Result` = help: the trait `FromResidual>` is implemented for `Result` error[E0277]: the `?` operator can only be used on `Result`s in a function that returns `Result` --> $DIR/bad-interconversion.rs:17:31 | LL | / fn control_flow_to_result() -> Result { LL | | Ok(ControlFlow::Break(123)?) | | ^ this `?` produces `ControlFlow<{integer}, Infallible>`, which is incompatible with `Result` LL | | LL | | } | |_- this function returns a `Result` | = help: the trait `FromResidual>` is not implemented for `Result` = help: the trait `FromResidual>` is implemented for `Result` error[E0277]: the `?` operator can only be used on `Option`s, not `Result`s, in a function that returns `Option` --> $DIR/bad-interconversion.rs:22:22 | LL | / fn result_to_option() -> Option { LL | | Some(Err("hello")?) | | ^ use `.ok()?` if you want to discard the `Result` error information LL | | LL | | } | |_- this function returns an `Option` | = help: the trait `FromResidual>` is not implemented for `Option` = help: the trait `FromResidual` is implemented for `Option` error[E0277]: the `?` operator can only be used on `Option`s in a function that returns `Option` --> $DIR/bad-interconversion.rs:27:33 | LL | / fn control_flow_to_option() -> Option { LL | | Some(ControlFlow::Break(123)?) | | ^ this `?` produces `ControlFlow<{integer}, Infallible>`, which is incompatible with `Option` LL | | LL | | } | |_- this function returns an `Option` | = help: the trait `FromResidual>` is not implemented for `Option` = help: the trait `FromResidual` is implemented for `Option` error[E0277]: the `?` operator can only be used on `ControlFlow`s in a function that returns `ControlFlow` --> $DIR/bad-interconversion.rs:32:39 | LL | / fn result_to_control_flow() -> ControlFlow { LL | | ControlFlow::Continue(Err("hello")?) | | ^ this `?` produces `Result`, which is incompatible with `ControlFlow` LL | | LL | | } | |_- this function returns a `ControlFlow` | = help: the trait `FromResidual>` is not implemented for `ControlFlow` = help: the trait `FromResidual` is implemented for `ControlFlow` error[E0277]: the `?` operator can only be used on `ControlFlow`s in a function that returns `ControlFlow` --> $DIR/bad-interconversion.rs:37:12 | LL | / fn option_to_control_flow() -> ControlFlow { LL | | Some(3)?; | | ^ this `?` produces `Option`, which is incompatible with `ControlFlow` LL | | LL | | ControlFlow::Break(10) LL | | } | |_- this function returns a `ControlFlow` | = help: the trait `FromResidual>` is not implemented for `ControlFlow` = help: the trait `FromResidual` is implemented for `ControlFlow` error[E0277]: the `?` operator in a function that returns `ControlFlow` can only be used on other `ControlFlow`s (with the same Break type) --> $DIR/bad-interconversion.rs:43:29 | LL | / fn control_flow_to_control_flow() -> ControlFlow { LL | | ControlFlow::Break(4_u8)?; | | ^ this `?` produces `ControlFlow`, which is incompatible with `ControlFlow` LL | | LL | | ControlFlow::Continue(()) LL | | } | |_- this function returns a `ControlFlow` | = help: the trait `FromResidual>` is not implemented for `ControlFlow` = note: unlike `Result`, there's no `From`-conversion performed for `ControlFlow` = help: the trait `FromResidual` is implemented for `ControlFlow` error: aborting due to 8 previous errors For more information about this error, try `rustc --explain E0277`.