Idea: Transitive closures of `Deref[Mut]` (and maybe `Coerce`)?

Is there any chance of extending the trait hierarchy to support transitive closures of Deref[Mut], [Try]From/[Try]Into, (and maybe not existing yet Coerce)?

Such as:

pub trait DerefChain<T: ?Sized> {
    fn deref_chain(&self) -> &T;
}

pub trait DerefMutChain<T: ?Sized> {
    fn deref_mut_chain(&mut self) -> &mut T;
}

// Bypass some limits of orphan rules
impl<T: Deref<Target: DerefChain<U> + ?Sized, U: ?Sized> DerefChain<U> for T {
    fn deref_chain(&self) -> &U {
        self.deref().deref_chain()
    }
}

// Bypass some limits of orphan rules
impl<T: DerefMut<Target: DerefMutChain<U> + ?Sized, U: ?Sized> DerefMutChain<U> for T {
    fn deref_mut_chain(&mut self) -> &mut U {
        self.deref_mut().deref_mut_chain()
    }
}

For something like From, transitive closure does not give unique conversion paths, so IMHO this seems like almost completely impossible to support.

For something like Deref it seems a bit less impossible because there’s always only one next Target type to get to, but cycles, or types reappearing along a Deref-chain with tifferent generic arguments, could maybe still be tricky to handle.