Como você realmente usa tipos de tamanho dinâmico no Rust?
Em teoria, os tipos de tamanho dinâmico (DST) chegaram e agora devemos poder usar instâncias de tipo de tamanho dinâmico. Na prática, não posso fazer isso funcionar, nem entender os testes ao seu redor.
Tudo parece girar em torno doSized?
palavra-chave ... mas como exatamente você a usa?
Eu posso montar alguns tipos:
// Note that this code example predates Rust 1.0
// and is no longer syntactically valid
trait Foo for Sized? {
fn foo(&self) -> u32;
}
struct Bar;
struct Bar2;
impl Foo for Bar { fn foo(&self) -> u32 { return 9u32; }}
impl Foo for Bar2 { fn foo(&self) -> u32 { return 10u32; }}
struct HasFoo<Sized? X> {
pub f:X
}
... mas como eu crio uma instância deHasFoo
, que é DST, para ter umBar
ouBar2
?
Tentar fazer isso sempre parece resultar em:
<anon>:28:17: 30:4 error: trying to initialise a dynamically sized struct
<anon>:28 let has_foo = &HasFoo {
Em geral, entendo que você não pode ter um tipo simples de tamanho dinâmico; você só pode interagir com um através de um ponteiro, mas não consigo descobrir como fazer isso.