Rust errors / Everything else
Rust compiler error · checked with rustc 1.99.0
Rust error E0317: `if` may be missing an `else` clause
What it meansAn if expression is missing an else block.
What rustc prints
error[E0317]: `if` may be missing an `else` clause --> main.rs:4:9 | 4 | let a = if x == 5 { | _________^ 5 | | 1 | | - found here 6 | | }; | |_^ expected integer, found `()` | = note: `if` expressions without `else` evaluate to `()` = help: consider adding an `else` block that evaluates to the expected type
Real output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
An if expression is missing an else block.
Erroneous code example:
let x = 5;
let a = if x == 5 {
1
};
This error occurs when an if expression without an else block is used in a context where a type other than () is expected. In the previous code example, the let expression was expecting a value but since there was no else, no value was returned.
An if expression without an else block has the type (), so this is a type error. To resolve it, add an else block having the same type as the if block.
So to fix the previous code example:
let x = 5;
let a = if x == 5 {
1
} else {
2
};From rustc --explain E0317 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0061this function takes N arguments but M were supplied
- E0412cannot find type in this scope
- E0515cannot return reference to local variable
- E0728await is only allowed inside async functions and blocks
- E0267`break` inside of a closure
- E0268`break` outside of a loop or labeled block
- E0320overflow while adding drop-check rules for `A<T>`
- E0370enum discriminant overflowed
Up next
Often hit nextE0061: this function takes N arguments but M were suppliedA related error from the same family.Read it next →Did this answer your question?