diff options
| author | Nadrieril <nadrieril+git@gmail.com> | 2024-04-04 00:46:35 +0200 |
|---|---|---|
| committer | Nadrieril <nadrieril+git@gmail.com> | 2024-04-20 15:59:54 +0200 |
| commit | 377e095371ae99dfdd61d5b50d4a43422b34ca23 (patch) | |
| tree | 812a04dd7c9a8b14798db33e3afd3c5ffa7a70a5 /tests/ui/pattern | |
| parent | 5c4909b8e18eb4fcc7e3b8b6826be5890aa8e529 (diff) | |
| download | rust-377e095371ae99dfdd61d5b50d4a43422b34ca23.tar.gz rust-377e095371ae99dfdd61d5b50d4a43422b34ca23.zip | |
Allow mutable bindings inside deref patterns
Diffstat (limited to 'tests/ui/pattern')
| -rw-r--r-- | tests/ui/pattern/deref-patterns/bindings.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/ui/pattern/deref-patterns/bindings.rs b/tests/ui/pattern/deref-patterns/bindings.rs index c0c8a70dbf0..4f72058af8f 100644 --- a/tests/ui/pattern/deref-patterns/bindings.rs +++ b/tests/ui/pattern/deref-patterns/bindings.rs @@ -24,6 +24,19 @@ fn nested_vec(vecvec: Vec<Vec<u32>>) -> u32 { } } +fn ref_mut(val: u32) -> u32 { + let mut b = Box::new(0u32); + match &mut b { + deref!(_x) if false => unreachable!(), + deref!(x) => { + *x = val; + } + _ => unreachable!(), + } + let deref!(x) = &b else { unreachable!() }; + *x +} + fn main() { assert_eq!(simple_vec(vec![1]), 1); assert_eq!(simple_vec(vec![1, 2]), 202); @@ -34,4 +47,6 @@ fn main() { assert_eq!(nested_vec(vec![vec![1, 42]]), 42); assert_eq!(nested_vec(vec![vec![1, 2, 3]]), 6); assert_eq!(nested_vec(vec![vec![], vec![1, 2, 3]]), 1); + + assert_eq!(ref_mut(42), 42) } |
