значение i32?
enum E {
A,
B,
C(i32),
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let x = Some(E::C(0));
//Option<E> -> Result<i32, String>
Ok(())
}
let res = if let Some(E::C(value)) = x { Ok(value) } else { Err("err".to_owned()) };
а чем тебе let else не зашел? enum Foo { Bar, Quz, Fuk(i32), } fn main() -> Result<(), Box<dyn std::error::Error>> { let opt = Some(Foo::Fuk(69)); let Some(Foo::Fuk(inner)) = opt else { Err("error")? }; assert_eq!(inner, 69); Ok(()) }
Надо делать вложенные паттерны Some(Foo::Bar(_))
так это нормально эе
Обсуждают сегодня