pub struct Stuff {
    inner: *mut (),
}

pub struct Wrap<T>(T);

fn fun<T>(t: T) -> Wrap<T> {
    todo!()
}

pub trait Trait<'de> {
    fn do_stuff(_: Wrap<&'de mut Self>);
}

impl<'a> Trait<'a> for () {
    fn do_stuff(_: Wrap<&'a mut Self>) {}
}

fn fun2(t: &mut Stuff) -> () {
    let Stuff { inner, .. } = t;
    Trait::do_stuff({ fun(&mut *inner) });
    //~^ ERROR the trait bound `*mut (): Trait<'_>` is not satisfied
}

fn main() {}