Wpis z mikrobloga

  • 0
Swoją drogą, wkurza mnie że jak najbardziej dla boola istnieje całkiem wygodne then_some ale ni ma then_ok które by zwracało resulta. Później są potworki w stylu if stuff { Ok(costam.value() } else { Err(costam::Error) }. Niespójne to :rollingeyes:
  • Odpowiedz
@Oo-oO: w jaki sposób jest to "rozwiązywanie problemów, które sam tworzy". Każdy język z RAII/refcounting i referencjami ma dokładnie ten sam problem i musisz podjąć jakąś decyzję jak to ma działać.

ma thenok które by zwracało resulta


I jak by to miało działać? W przypadku Option masz tylko jedną wartość potrzebną, w przypadku Result masz 2 osobne wartości. Więc wychodziłoby, że
  • Odpowiedz
  • 0
@Hauleth: może bez sensu, może nie. Dla Result jest sporo sposobów by zmniejszyć nesting (ofc kosztem dłuższej linii)... choć zaraz mi ktoś powie że wcale nie zmniejsza - i ma w sumie racje, w takim razie zostańmy przy "innych sposobów zapisu ;)":

// this -> Result<(), Error<I::Error>>
// if fallible.is_ok_and(|f| f.is_really_true()) { Ok(()) } else { failed }
// fallible.map_or(failed, |f| if f.is_really_true() { Ok(()) } else { failed2 })
//
  • Odpowiedz
  • 0
@Hauleth: pewnie miałeś na myśli fallible?.is_really_true().then(|| ()).ok_or(Error) bo to większa paskuda tam, ale wiadomo o co chodzi... z jednej strony to closure (jak to się kurde nazywa po polsku) irytuje, ale

if fallible?.is_really_true() {
Ok(())
} else
  • Odpowiedz