Skip to content

Commit

Permalink
ensure that tail expr receive lifetime extension
Browse files Browse the repository at this point in the history
  • Loading branch information
dingxiangfei2009 committed Nov 11, 2024
1 parent c22887b commit aee8152
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
("Hello", 1) [(("Hello", 1),)] "Hello" "Hello" "Hello" ("Hello", 1) ("Hello", 1) ("Hello", 1)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
("Hello", 1) [(("Hello", 1),)] "Hello" "Hello" "Hello" ("Hello", 1) ("Hello", 1) ("Hello", 1)
25 changes: 19 additions & 6 deletions tests/ui/lifetimes/temporary-lifetime-extension.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
//@ check-pass
// This is a test for the new temporary lifetime behaviour as implemented for RFC 3606.
// In essence, with #3606 we can write the following variable initialisation without
// a borrow checking error because the temporary lifetime is automatically extended.
// ```rust
// let x = if condition() {
// &something()
// } else {
// &something_else()
// };
// ```
// More details can be found in https://github.com/rust-lang/rfcs/pull/3606

//@ run-pass
//@ check-run-results
//@ revisions: edition2021 edition2024
//@ [edition2021] edition: 2021
//@ [edition2024] edition: 2024
//@ [edition2024] compile-flags: -Z unstable-options

fn temp() -> (String, i32) {
(String::from("Hello"), 1)
Expand All @@ -13,11 +30,7 @@ fn main() {
let _ = 123;
&(*temp().0)[..]
};
let f = if true {
&temp()
} else {
&temp()
};
let f = if true { &temp() } else { &temp() };
let g = match true {
true => &temp(),
false => {
Expand Down

0 comments on commit aee8152

Please sign in to comment.