// check-fail enum Either { Left(L), Right(R), } pub trait HasChildrenOf { type T; type TRef<'a>; //~^ missing required fn ref_children<'a>(&'a self) -> Vec>; fn take_children(self) -> Vec; } impl HasChildrenOf for Either where Left: HasChildrenOf, Right: HasChildrenOf, { type T = Either; type TRef<'a> = Either<&'a Left::T, &'a Right::T> where ::T: 'a, ::T: 'a; fn ref_children<'a>(&'a self) -> Vec> { todo!() } fn take_children(self) -> Vec { todo!() } } fn main() {}