Why choosing `unwrap_or_else` over `unwrap_or`? [duplicate]

Both are evaluated during the program’s execution and can be arbitrary values. The difference is that:

  • With unwrap_or the fallback value is evaluated just before unwrap_or is called, and therefore is evaluated whether it’s needed or not (because Rust is an eager language).
  • With unwrap_or_else the fallback value is evaluated only when unwrap_or_else triggers it (by invoking the function you pass), and therefore is evaluated only if it’s needed.

Leave a Comment

error code: 521