use std::rc::Rc; #[macro_use] extern crate rental; pub struct Sample { field: i32, } rental! { mod sample_rental { use super::*; #[rental] pub struct SampleRental { sample: Rc, sref: &'sample i32, } } } use self::sample_rental::SampleRental; #[test] fn unused() { let sample = Rc::new(Sample { field: 42 }); let rental = SampleRental::new(sample, |sample_rc| &sample_rc.field); rental.rent(|this| println!("{}", this)); }