diff options
| author | Ding Xiang Fei <dingxiangfei2009@protonmail.ch> | 2022-07-22 18:13:17 +0800 |
|---|---|---|
| committer | Ding Xiang Fei <dingxiangfei2009@protonmail.ch> | 2022-07-22 18:13:17 +0800 |
| commit | 60be2de8b7b8a1c4eee7e065b8cef38ea629a6a3 (patch) | |
| tree | 61e643c51c88fa50a2712e3a3d0509ee857d0821 | |
| parent | baf9a7cb57120ec1411196214fd0d1c33fb18bf6 (diff) | |
| download | rust-60be2de8b7b8a1c4eee7e065b8cef38ea629a6a3.tar.gz rust-60be2de8b7b8a1c4eee7e065b8cef38ea629a6a3.zip | |
include a demo that more programs can be compiled
| -rw-r--r-- | src/test/ui/let-else/let-else-temporary-lifetime.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/test/ui/let-else/let-else-temporary-lifetime.rs b/src/test/ui/let-else/let-else-temporary-lifetime.rs index 064f28b4d94..9c86901b97f 100644 --- a/src/test/ui/let-else/let-else-temporary-lifetime.rs +++ b/src/test/ui/let-else/let-else-temporary-lifetime.rs @@ -30,6 +30,21 @@ fn main() { println!("Should have dropped 👆"); { + // cf. https://github.com/rust-lang/rust/pull/99518#issuecomment-1191520030 + struct Foo<'a>(&'a mut u32); + + impl<'a> Drop for Foo<'a> { + fn drop(&mut self) { + *self.0 = 0; + } + } + let mut foo = 0; + let Foo(0) = Foo(&mut foo) else { + *&mut foo = 1; + todo!() + }; + } + { let x = String::from("Hey"); let Ok(s) = foo(&x) else { panic!() }; @@ -61,6 +76,8 @@ fn main() { } { // test let-else drops temps before else block + // NOTE: this test has to be the last block in the `main` + // body. let rc = Rc::new(0); let 1 = *rc.clone() else { Rc::try_unwrap(rc).unwrap(); |
