Four Months of Zig

(gracefulliberty.com)

28 points | by ibobev 1 hour ago

3 comments

  • paaloeye 22 minutes ago
    Does ReTangled have anything to do with https://tangled.org?
  • LoganDark 54 minutes ago
    > In Rust you can use ?, which is quicker than unwrap, but you also have to do something like Result<Type, Box<dyn std::error::Error>

    No, you don't! When returning Result<T, E>, you can use ? on any Result<T2, E2> where E: From<E2>. In other words E doesn't have to be Box<dyn>, it just has to satisfy From<E2>.

    Crates like thiserror make it easy to define your own error types that can be easily converted from all the other error types you can encounter in your functions! I do this whenever it doesn't make sense to use an inner error type directly, or whenever a function does its own validation that deserves its own error variant.

    On top of that, I tend to also have error variants for each place in the function rather than only for each type of inner error. At error sites I do something like `.map_err(MyError::PlaceInTheFunction)?` rather than only `?`, and then errors become like a very efficient backtrace :)

    • Graziano_M 20 minutes ago
      I think you're proving the author's point.
      • GreenDolphinSys 10 minutes ago
        They're saying that you don't always have to return Result<T, Box<dyn Error>>, you can implement the From<Error> trait on the type and use ? as usual.

        In other words implementing that trait lets you set a return type like Result<T, CustomAppError> use ? on it.

        • LoganDark 9 minutes ago
          I think they're saying the author's point is that it's more fiddly in Rust (even if there are strong, well-regarded fiddles to use)
          • Graziano_M 7 minutes ago
            Yes, and your other part about the crate.

            > There's also Zig-style composable errors with yet another library.

            • LoganDark 0 minutes ago
              Ah, it's behind a link!

              While I'd push back against claiming From<E2> is part of the crate, thiserror is an idiomatic approach these days, so I can understand the confusion. I can totally see how they could come to favor Zig where this behavior is "the default", when in Rust you'd usually see it done with "yet another library".

              And so I assume "the author's point" has another meaning now: that Zig-style errors are good :)

      • tcfhgj 17 minutes ago
        how so?
        • LoganDark 10 minutes ago
          I expect an interpretation of "something like"
  • paaloeye 1 hour ago
    $curl: (6) Could not resolve host: gracefulliberty.com HN effect?