use std::cell::Cell; const fn foo1() {} const fn foo2(x: i32) -> i32 { x } const fn foo3() -> i32 { 42 } const fn foo4() -> Cell { Cell::new(42) } const fn foo5() -> Option> { Some(Cell::new(42)) } const fn foo6() -> Option> { None } fn main() { let x: &'static () = &foo1(); //~ ERROR temporary value dropped while borrowed let y: &'static i32 = &foo2(42); //~ ERROR temporary value dropped while borrowed let z: &'static i32 = &foo3(); //~ ERROR temporary value dropped while borrowed let a: &'static Cell = &foo4(); //~ ERROR temporary value dropped while borrowed let a: &'static Option> = &foo5(); //~ ERROR temporary value dropped while borrowed let a: &'static Option> = &foo6(); //~ ERROR temporary value dropped while borrowed }