use std::ops::Deref; struct NotCopy { inner: bool } impl NotCopy { fn inner_method(&self) {} } struct Foo { first: NotCopy, second: NotCopy } impl Deref for Foo { type Target = NotCopy; fn deref(&self) -> &NotCopy { &self.second } } fn use_field(val: Foo) { let _val = val.first; val.inner; //~ ERROR borrow of } fn use_method(val: Foo) { let _val = val.first; val.inner_method(); //~ ERROR borrow of } fn main() {}