trait Monad { type Unwrapped; type Wrapped; fn bind(self, f: F) -> Self::Wrapped { //~^ ERROR: the size for values of type `Self` cannot be known todo!() } } fn join(outer: MOuter) -> MOuter::Wrapped where MOuter: Monad, MInner: Monad>, //~^ ERROR: missing generics for associated type `Monad::Wrapped` { outer.bind(|inner| inner) } fn main() { assert_eq!(join(Some(Some(true))), Some(true)); //~^ ERROR: `Option>: Monad` is not satisfied }