ich in einer Pipeline, wie so einen Wert zu konvertieren im Grunde bin versucht:Verwendung in() innerhalb einer Monade Pipeline
#[derive(PartialEq)]
enum MyType { A, B }
impl Into<MyType> for i32 {
fn into(self) -> MyType {
match self {
0 => MyType::A,
_ => MyType::B
}
}
}
fn main() {
let a: Result<i32,()> = Ok(0);
a.map(|int| int.into())
.and_then(|enm| if enm == MyType::A { println!("A"); });
}
Das Problem, das ich in laufen lasse, ist, dass map()
wissen nicht, was es gibt sollte ausgegeben werden.
Andere Dinge, die ich habe versucht, was nicht funktioniert hat:
a.map(|int| if int.into() as MyType == MyType::A { println!("A"); });
a.map(|int| int.into::<MyType>())
.and_then(|enm| if enm == MyType::A { println!("A"); });
Dies funktioniert, fühlt sich aber unnötig komplex:
a.map(|int| {
let enm: MyType = int.into();
if enm == MyType::A { println!("A"); }
});
Gibt es einen besseren Weg, dies zu tun?
erklärt Ihr ursprünglicher Code funktioniert nicht, weil 'and_then' erwartet ein 'Ergebnis'. –