//@ check-pass fn temp() -> (String, i32) { (String::from("Hello"), 1) } fn main() { let a = &temp(); let b = [(&temp(),)]; let c = &temp().0; let d = &temp().0[..]; let e = { let _ = 123; &(*temp().0)[..] }; let f = if true { &temp() } else { &temp() }; let g = match true { true => &temp(), false => { let _ = 123; &temp() } }; let h = match temp() { // The {} moves the value, making a new temporary. owned_non_temporary => &{ owned_non_temporary }, }; println!("{a:?} {b:?} {c:?} {d:?} {e:?} {f:?} {g:?} {h:?}"); }