Consider this trait. What is the practical effect of `Output` being an associated type rather than a generic parameter on `Add`?trait Add<Rhs = Self> { type Output; fn add(self, rhs: Rhs) -> Self::Output; }