3 ms·
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.
by Manishearth 9y ago
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.
- irishsultan 9y agoIt 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))); }
- Manishearth 9y agoMy bad, I think I read this as let val = if .... by accident. Oops
- viraptor 9y agohttps://rustbyexample.com/flow_control/if_else.html https://rustbyexample.com/flow_control/if_else.html > if-else conditionals are expressions, and, all branches must return the same type.
- Manishearth 9y agoYeah; I misread the original code