#![allow(dead_code, unused_imports)] #[macro_use] extern crate derive_more; #[derive(Deref)] #[deref(forward)] struct MyBoxedInt(Box); #[derive(Deref)] #[deref(forward)] struct NumRef<'a> { num: &'a i32, } #[derive(Deref)] struct NumRef2<'a> { #[deref(forward)] num: &'a i32, useless: bool, } #[derive(Deref)] #[deref(forward)] struct NumRef3<'a> { num: &'a i32, #[deref(ignore)] useless: bool, } #[derive(Deref)] struct MyInt(i32); #[derive(Deref)] struct Point1D { x: i32, } #[derive(Deref)] struct Point1D2 { x: i32, #[deref(ignore)] useless: bool, } #[derive(Deref)] struct CoolVec { cool: bool, #[deref] vec: Vec, } #[derive(Deref)] struct GenericVec(Vec); #[test] fn deref_generic() { let gv = GenericVec(Vec::::new()); assert!(gv.is_empty()) } #[derive(Deref)] struct GenericBox(#[deref(forward)] Box); #[test] fn deref_generic_forward() { let boxed = GenericBox(Box::new(1i32)); assert_eq!(*boxed, 1i32); }