• YIj54yALOJxEsY20eU@lemm.eeOP
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    9 months ago

    Thank you very much, I’m definitely going to take this for a spin! Can I ask if you or someone you know uses this? I’m curious what the experience is like and if theres any downfalls.

    • anti-idpol action@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      9 months ago

      A simple example:

      
      func GetConfig(path string) mo.Result[*Config] {
      return mo.Try(func (*Config, error) {
      // logic to get the config
      })
      }
      
      conf := GetConfig.OrElse(&DefaultConfig)
      

      While it might not make much sense for a function you use just once, it can get actually pretty useful to simplify error handling like this for something you use more often.

    • anti-idpol action@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      9 months ago

      mostly the Result type. MustGet where you’d except a panic OrElse to pass a fallback value (can be a function with return value of the same type, as the inner function, but without an error). Useful in e.g. more complex constructors where some fields might not be readily available. Either can for instance be useful to have arbitrary type unions in structs. I haven’t used Option that much but seems similar to Rust’s.