# Error code E0029

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

Erroneous code example:

ⓘ

    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" => {}
        _ => {}
    }

Run

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.

Back to list of error codes