Почему универсальный метод внутри признака требует размера объекта признака?

я есть следующий код:

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();
}

игровая площадка

Что приводит к этой ошибке:

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

Почему это невозможно? Работает при удаленииSelf: Sized&nbsp;однако, я не могу использовать генерики, что довольно удобно для звонящего.

Этоне&nbsp;дубликатПочему универсальный метод внутри признака требует размера объекта признака?, Этот вопрос спрашивает о том, почему вы не можете позвонитьbaz&nbsp;от черты объекта. яне&nbsp;спрашиваю, зачем нужна граница. Это уже былообсуждается.