//@ check-pass | |
#![allow(dead_code)] | |
use std::ops::{Deref, DerefMut}; | |
struct Foo; | |
impl Foo { | |
fn foo_mut(&mut self) {} | |
} | |
struct Bar(Foo); | |
impl Deref for Bar { | |
type Target = Foo; | |
fn deref(&self) -> &Foo { | |
&self.0 | |
} | |
} | |
impl DerefMut for Bar { | |
fn deref_mut(&mut self) -> &mut Foo { | |
&mut self.0 | |
} | |
} | |
fn test(mut bar: Box<Bar>) { | |
bar.foo_mut(); | |
} | |
fn main() {} |