#![deny(deref_into_dyn_supertrait)] use std::ops::Deref; trait Bar<'a> {} trait Foo<'a>: Bar<'a> {} impl<'a> Deref for dyn Foo<'a> { //~^ ERROR this `Deref` implementation is covered by an implicit supertrait coercion //~| WARN this will change its meaning in a future release! type Target = dyn Bar<'a>; fn deref(&self) -> &Self::Target { todo!() } } fn main() {}