43 lines
797 B
Rust
43 lines
797 B
Rust
|
// Test that the borrow checker doesn't consider checking an exhaustive pattern
|
||
|
// as an access.
|
||
|
|
||
|
// check-pass
|
||
|
|
||
|
// aux-build:monovariants.rs
|
||
|
extern crate monovariants;
|
||
|
|
||
|
use monovariants::ExhaustiveMonovariant;
|
||
|
|
||
|
enum Local {
|
||
|
Variant(u32),
|
||
|
}
|
||
|
|
||
|
#[non_exhaustive]
|
||
|
enum LocalNonExhaustive {
|
||
|
Variant(u32),
|
||
|
}
|
||
|
|
||
|
fn main() {
|
||
|
let mut x = ExhaustiveMonovariant::Variant(1);
|
||
|
let y = &mut x;
|
||
|
match x {
|
||
|
ExhaustiveMonovariant::Variant(_) => {},
|
||
|
_ => {},
|
||
|
}
|
||
|
drop(y);
|
||
|
let mut x = Local::Variant(1);
|
||
|
let y = &mut x;
|
||
|
match x {
|
||
|
Local::Variant(_) => {},
|
||
|
_ => {},
|
||
|
}
|
||
|
drop(y);
|
||
|
let mut x = LocalNonExhaustive::Variant(1);
|
||
|
let y = &mut x;
|
||
|
match x {
|
||
|
LocalNonExhaustive::Variant(_) => {},
|
||
|
_ => {},
|
||
|
}
|
||
|
drop(y);
|
||
|
}
|