## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Error code E0029

Something other than numbers and characters has been used for a range.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    let string = "salutations !";

    // The ordering relation for strings cannot be evaluated at compile time,
    // so this doesn't work:
    match string {
        "hello" ..= "world" => {}
        _ => {}
    }

    // This is a more general version, using a guard:
    match string {
        s if s >= "hello" && s <= "world" => {}
        _ => {}
    }
    }

In a match expression, only numbers and characters can be matched against a range. This is because the compiler checks that the range is non-empty at compile-time, and is unable to evaluate arbitrary comparison functions. If you want to capture values of an orderable type between two end-points, you can use a guard.