#[macro_use] extern crate rental; #[derive(Debug)] pub struct Foo { i: i32, } rental! { mod rentals { use super::*; #[rental(debug, deref_suffix)] pub struct SimpleRef { foo: Box, iref: &'foo i32, } #[rental_mut(debug, deref_suffix)] pub struct SimpleMut { foo: Box, iref: &'foo mut i32, } } } #[test] fn print() { let foo = Foo { i: 5 }; let sr = rentals::SimpleRef::new(Box::new(foo), |foo| &foo.i); println!("{:?}", sr); let foo = Foo { i: 5 }; let sm = rentals::SimpleMut::new(Box::new(foo), |foo| &mut foo.i); println!("{:?}", sm); }