Error on struct pattern with enum · Issue #74863 · rust-lang/rust (original) (raw)

The following code doesn't compiles:

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

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);

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