Ich habe einige Code, der wie folgt aussieht:Gibt es eine nicht-chaotische Möglichkeit, die Ergebnisse von Funktionen zu verketten, die Optionswerte zurückgeben?
f(a).and_then(|b| {
g(b).and_then(|c| {
h(c).map(|d| {
do_something_with(a, b, c, d)
})
})
})
Wo f
, g
und h
Rückkehr Option
Werte. Ich muss alle Zwischenwerte (a
, b
, c
und d
) in der do_something_with
Berechnung verwenden. Die Vertiefung ist sehr tief. Gibt es einen besseren Weg, dies zu tun? Ideal wäre es etwa so aussehen (was natürlich nicht funktioniert):
try {
let b = f(a);
let c = g(b);
let d = h(c);
do_something_with(a, b, c, d)
} rescue NonexistentValueException {
None
}
tun, um alle Funktionen liefern die gleiche Option Typ? oder ändern sie den Typ? –
, falls sie sind: hier ist ein Makro-freie Lösung: http://is.gd/eItCTh andere Lösungen erfordern Wert Generika oder variadische Generika oder ein Merkmal wie [FixedSizeArray] (https://doc.rust-lang.org /nightly/core/array/trait.FixedSizeArray.html) nur für Tupel –