Skip to content

Issue when pattern matching on tuples using guards #14913

@aochagavia

Description

@aochagavia

The code:

fn main() {
    let (name, street) = ("John".to_str(), "Something".to_str());
    match (name, street) {
        (ref n, s) if *n == "...".to_str() => (),
        _ => ()
    }
}

The error message:

test.rs:4:17: 4:18 error: cannot bind by-move into a pattern guard
test.rs:4         (ref n, s) if *n == "...".to_str() => (),
                          ^
error: aborting due to previous error

This forces you to use ref s to satisfy the compiler, but s is not used at all in the pattern guard! I think it this code should compile without ref s.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions