In theory, Dynamically-Sized Types (DST) have landed and we should now be able to use dynamically sized type instances. Practically speaking, I can neither make it work, nor
At the moment, to create a HasFoo
storing a type-erased Foo
you need to first create one with a fixed concrete type and then coerce a pointer to it to the DST form, that is
let has_too: &HasFoo = &HasFoo { f: Bar };
Calling has_foo.f.foo()
then does what you expect.
In future these DST casts will almost certainly be possible with as
, but for the moment coercion via an explicit type hint is required.