#[macro_use] extern crate rental; rental! { pub mod rent_string { #[rental(deref_suffix)] pub struct OwnedStr { buffer: String, slice: &'buffer str, slice_2: &'slice str, } } } #[test] fn new() { let buf = "Hello, World!".to_string(); let _ = rent_string::OwnedStr::new(buf, |slice| slice, |slice, _| slice); } #[test] fn read() { let buf = "Hello, World!".to_string(); let rbuf = rent_string::OwnedStr::new(buf, |slice| slice, |slice, _| slice); assert_eq!(&*rbuf, "Hello, World!"); }