Content-Length: 25071 | pFad | https://doc.rust-lang.org/std/pin/../hash/../../std/sync/../../../std/../error_codes/./E0408.html

E0408 - Error codes index

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 E0408

An β€œor” pattern was used where the variable bindings are not consistently bound across patterns.

Erroneous code example:

#![allow(unused)]
fn main() {
match x {
    Some(y) | None => { /* use y */ } // error: variable `y` from pattern #1 is
                                      //        not bound in pattern #2
    _ => ()
}
}

Here, y is bound to the contents of the Some and can be used within the block corresponding to the match arm. However, in case x is None, we have not specified what y is, and the block will use a nonexistent variable.

To fix this error, either split into multiple match arms:

#![allow(unused)]
fn main() {
let x = Some(1);
match x {
    Some(y) => { /* use y */ }
    None => { /* ... */ }
}
}

or, bind the variable to a field of the same type in all sub-patterns of the or pattern:

#![allow(unused)]
fn main() {
let x = (0, 2);
match x {
    (0, y) | (y, 0) => { /* use y */}
    _ => {}
}
}

In this example, if x matches the pattern (0, _), the second field is set to y. If it matches (_, 0), the first field is set to y; so in all cases y is set to some value.









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://doc.rust-lang.org/std/pin/../hash/../../std/sync/../../../std/../error_codes/./E0408.html

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy