Skip to content

Error on struct pattern with enum #74863

Closed
@ricvelozo

Description

@ricvelozo

The following code doesn't compiles:

struct Website {
    url: String,
    title: Option<String>,
}

fn main() {
    let website = Website {
        url: "http://www.example.com".into(),
        title: Some("Example Domain".into()),
    };

    if let Website { url, Some(title) } = website {
        println!("[{}]({})", title, url);
    }
}

The compile error:

error: expected `,`
  --> src/main.rs:14:27
   |
14 |     if let Website { url, Some(title) } = website {
   |                           ^^^^

error[E0425]: cannot find value `title` in this scope
  --> src/main.rs:15:30
   |
15 |         println!("[{}]({})", title, url);
   |                              ^^^^^ not found in this scope

error[E0423]: expected value, found crate `url`
  --> src/main.rs:15:37
   |
15 |         println!("[{}]({})", title, url);
   |                                     ^^^ not a value

error: aborting due to 3 previous errors

If I use an tuple instead, the code compiles:

struct Website(String, Option<String>);

fn main() {
    let website = Website(
        "http://www.example.com".into(),
        Some("Example Domain".into()),
    );

    if let Website(url, Some(title)) = website {
        println!("[{}]({})", title, url);
    }
}

Meta

rustc --version --verbose:

rustc 1.45.0 (5c1f21c3b 2020-07-13)
binary: rustc
commit-hash: 5c1f21c3b82297671ad3ae1e8c942d2ca92e84f2
commit-date: 2020-07-13
host: x86_64-unknown-linux-gnu
release: 1.45.0
LLVM version: 10.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-diagnosticsArea: Messages for errors, warnings, and lintsA-parserArea: The lexing & parsing of Rust source code to an ASTC-enhancementCategory: An issue proposing an enhancement or a PR with one.D-papercutDiagnostics: An error or lint that needs small tweaks.D-verboseDiagnostics: Too much output caused by a single piece of incorrect code.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions