// 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() {}
