View all comments
I'm not sure if this is a bug or not.
I expected the below code to produce a compile error, but instead it compiles fine.
struct Thing;
fn foo() -> &'static Thing {
let y;
match Thing {
x if { y = &x; true } => {
// This drop should invalidate y
drop(x);
y
}
_ => {
panic!();
}
}
}
It seems that the single Thing constant is both moved and static-promoted. This seems very strange.
Related to #144939. Discovered in #141295 (comment).
@rustbot labels +A-patterns +A-const-eval
Meta
Reproduces on the playground with version 1.91.0-nightly (2025-08-09 ca77504943887037504c)
View all comments
I'm not sure if this is a bug or not.
I expected the below code to produce a compile error, but instead it compiles fine.
It seems that the single
Thingconstant is both moved and static-promoted. This seems very strange.Related to #144939. Discovered in #141295 (comment).
@rustbot labels +A-patterns +A-const-eval
Meta
Reproduces on the playground with version
1.91.0-nightly (2025-08-09 ca77504943887037504c)