¿Por qué no se puede invocar una función en un objeto de rasgo cuando está limitada con `Self: Sized`?

Tengo el siguiente código

trait Bar {
    fn baz(&self, arg: impl AsRef<str>) where Self: Sized;
}

struct Foo;

impl Bar for Foo {
    fn baz(&self, arg: impl AsRef<str>) {}
}

fn main() {
    let boxed: Box<dyn Bar> = Box::new(Foo);
    boxed.baz();
}

patio de recre

Que produce este error:

error: the `baz` method cannot be invoked on a trait object
  --> src/main.rs:13:11
   |
13 |     boxed.baz();
   |           ^^^

¿Por qué esto no es posible? Funciona al eliminar laSelf: Sized límite, sin embargo, entonces no puedo usar genéricos, lo cual es bastante cómodo para la persona que llama.

Esto esn un duplicado de ¿Por qué un método genérico dentro de un rasgo requiere que el objeto rasgo sea dimensionado?. Esta pregunta pregunta por qué no puedes llamar abaz de un objeto de rasgo. Soyn preguntando, por qué se requiere el límite. Esto ya ha sido discutido.

Respuestas a la pregunta(2)

Su respuesta a la pregunta