| use std::rc::Rc; | |
| use std::sync::Arc; | |
| struct Foo<'a>(&'a String); | |
| impl<'a> Drop for Foo<'a> { | |
| fn drop(&mut self) { | |
| println!("{:?}", self.0); | |
| } | |
| } | |
| fn main() { | |
| { | |
| let (y, x); | |
| x = "alive".to_string(); | |
| y = Arc::new(Foo(&x)); | |
| } | |
| //~^^ ERROR `x` does not live long enough | |
| { | |
| let (y, x); | |
| x = "alive".to_string(); | |
| y = Rc::new(Foo(&x)); | |
| } | |
| //~^^ ERROR `x` does not live long enough | |
| } |