4 #![allow(unused_variables)]
7 let bytes: Vec<u8> = b"Hello"[..].to_vec();
8 let some = Some(bytes);
10 let Some(ref a) = Some(()) else { return };
12 // | ref | type annotation | & |
13 // | --- | --------------- | - |
15 // | x | x | x | error
19 let Some(ref a) = some else { return }; // OK
23 let Some(ref a) = &some else { return }; // OK
28 let Some(a) = &some else { return }; // OK
31 let Some(a): Option<&[u8]> = some.as_deref() else { return }; // OK
33 let Some(ref a): Option<&[u8]> = some.as_deref() else { return }; // OK
38 // This `ref mut` case had an ICE, see issue #89960
39 let Some(ref mut a) = Some(()) else { return };
41 let bytes: Vec<u8> = b"Hello"[..].to_vec();
42 let mut some = Some(bytes);
44 // | ref mut | type annotation | &mut |
45 // | ------- | --------------- | ---- |
47 // | x | x | x | error
51 let Some(ref mut a) = some else { return }; // OK
55 let Some(ref mut a) = &mut some else { return }; // OK
59 let Some(a) = &mut some else { return }; // OK
62 let Some(a): Option<&mut [u8]> = some.as_deref_mut() else { return }; // OK
64 let Some(ref mut a): Option<&mut [u8]> = some.as_deref_mut() else { return }; // OK