error[E0515]: cannot return value referencing local variable `x` --> $DIR/hidden-lifetimes.rs:41:5 | LL | hide_ref(&mut res).swap(hide_ref(&mut &x)); | -- `x` is borrowed here LL | res | ^^^ returns a value referencing data owned by the current function error[E0597]: `x` does not live long enough --> $DIR/hidden-lifetimes.rs:57:38 | LL | let x = [1, 2, 3]; | - binding `x` declared here LL | let short = Rc::new(RefCell::new(&x)); | ^^ borrowed value does not live long enough LL | hide_rc_refcell(long.clone()).swap(hide_rc_refcell(short)); LL | let res: &'static [i32; 3] = *long.borrow(); | ----------------- type annotation requires that `x` is borrowed for `'static` LL | res LL | } | - `x` dropped here while still borrowed error: aborting due to 2 previous errors Some errors have detailed explanations: E0515, E0597. For more information about an error, try `rustc --explain E0515`.