Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

No, that, _and_ that if let ... {} doesn't evaluate to anything; your function doesn't evaluate to anything even though it has a stated return type of Option.

I mean, this isn't hard to check, try compiling it.

I was saying it's misleading not only because it's wrong, but also because even if something is equivalent if you're trying to show how a feature works you want equivalent code that cleanly maps to the original; and isn't further reduced.



It does evaluate to something, try this if you don't believe me.

  fn try_option_some(param: Option<u8>) -> Option<u8> {
    if let Some(val) = param {
      Some(val + 1)
    } else {
      None
    }
  }

  fn main() {
    print!("{:?}\n", try_option_some(None));
    print!("{:?}\n", try_option_some(Some(2)));
  }


My bad, I think I read this as let val = if .... by accident. Oops


https://rustbyexample.com/flow_control/if_else.html

> if-else conditionals are expressions, and, all branches must return the same type.


Yeah; I misread the original code




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: