До динамического размера типов не реализуются должным образом, вы не можете использовать голую [T]
как поле структуры, и даже тогда, когда они будут реализованы, то вы, вероятно, не хотели бы это.
Кажется, вы хотите сохранить массив в структуру, правильно? Есть два способа сделать это в Rust, в зависимости от того, кто владеет содержимым массива.
Когда сам экземпляр структуры должен владеть данными, то самый простой способ заключается в использовании Vec<T>
:
struct Foo {
bar: Vec<int>
}
Вы создаете свой экземпляр, как это:
Foo {
bar: vec![1, 2, 3]
}
Когда экземпляр структуры должен только заимствовать данные, вы должны использовать ломтик, :
struct Foo<'a> {
bar: &'a [int] // or &'a mut [int] if you need to modify contents
}
Затем вы создаете это следующим образом:
let data: Vec<int> = ...; // obtained from somewhere
// slices can only be taken from existing data, e.g. Vec<T>, or be &'static
Foo {
bar: data.as_slice() // or as_mut_slice() for &mut [int]
}
Я очень рекомендую вам чтение отлично official guide что объясняет разницу между векторами и принадлежащей долькой и многими другими вещами.