Bounds for default method implementations

I realised #[requires] might be just enough to address this:

trait Consume {
    fn consume(self) where Self: Sized;
    fn consume_boxed(self: Box<Self>);

    #[requires(consume)]
    default {
        fn consume_boxed(self: Box<Self>) {
            Self::consume(*self)
        }
    }
}