Por que uma função em um objeto de característica não pode ser chamada quando delimitada com `Self: Sized`?

Eu tenho o seguinte 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();
}

Parque infantil

O que resulta neste erro:

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

Por que isso não é possível? Está funcionando ao remover oSelf: Sized vinculado, no entanto, não posso usar genéricos, o que é bastante confortável para o chamador.

Isto énão uma duplicata dePor que um método genérico dentro de uma característica exige que o objeto seja dimensionado?. Esta pergunta é sobre por que você não pode ligarbaz de um objeto de característica. Eu estounão perguntando, por que o limite é necessário. Isso já foidiscutido.

questionAnswers(2)

yourAnswerToTheQuestion