Почему компилятор предполагает, что значение if let должно быть `()`?
У меня есть следующий код:
use std::collections::HashSet;
fn translate() -> Option<String> {
None
}
fn main() {
let mut found = HashSet::new();
if let Some(tr) = translate() {
found.insert(tr);
}
}
Работает нормально, но при удалении точки с запятой послеfound.insert(tr)
Я получаю ошибку компилятора:
error[E0308]: mismatched types
--> src/main.rs:11:9
|
7 | fn main() {
| - expected `()` because of default return type
...
11 | found.insert(tr)
| ^^^^^^^^^^^^^^^^- help: try adding a semicolon: `;`
| |
| expected (), found bool
|
= note: expected type `()`
found type `bool`
Неважно, где находится этот код или это последнее выражение функции.
Почему компилятор предполагает, что выражение внутри фигурных скобок должно быть()
?