E0317 - Error codes index
Description: Book listing all Rust error codes

# Error code E0317

An `if` expression is missing an `else` block.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    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:

    #![allow(unused)]
    fn main() {
    let x = 5;
    let a = if x == 5 {
        1
    } else {
        2
    };
    }