4 ms·
Allowing unsafe unwraps defeats a core purpose of rust, Definitely, but you can also still do this in Haskell (fromJust). But it's better than nullable types s
by danieldk 11y ago
Allowing unsafe unwraps defeats a core purpose of rust,
Definitely, but you can also still do this in Haskell (fromJust). But it's better than nullable types since you explicitly have call an unsafe method. (Assuming that you have set non-exhaustive pattern matching to be a warning/error.)
- steveklabnik 11y agounwrap() is not unsafe in Rust, and I don't think Haskell has anything similar?
- danieldk 11y agoSorry for the confusion! I meant 'unsafe' as in partial (not safe for all inputs). Not as in Rust's unsafe keyword.
- steveklabnik 11y agoAh, right. It's really important in the context of Rust. :) People sometimes claim that unwrap() violates memory safety, which isn't true.
- codygman 11y agoThe definition in Rust's documentation[0] was this: let x: Option<&str> = None; assert_eq!(x.unwrap(), "air"); // fails The equivalent Haskell if unwrap throws a panic as the docs[0] seem to imply: λ> fromMaybe (error "panic!") Nothing *** Exception: panic! You could also do something like this if you don't mind dealing with the wrapped boolean value: λ> fmap (== "air") (Just "air") Just True and the failure case: λ> fmap (== "air") (Nothing) Nothing 0: https://doc.rust-lang.org/std/option/enum.Option.html#method.unwrap https://doc.rust-lang.org/std/option/enum.Option.html#method...
- deleted 11y ago[deleted]
- steveklabnik 11y agoRight, but it's still not unsafe. The stack unwinds, destructors get called. And I meant some notion of 'safety', not fromMaybe/fromJust.