And to answer the usual next question: while at the top level this is sometimes surprising, it’s really important that it works this way for nested patterns.
if let Some(_) = foo {
pass_ownership(foo);
}
really needs to not move foo as part of that pattern, so let _ = foo also doesn’t move foo.