我在Rust中遇到问题,但尚未找到答案:
mismatched types: expected `[int]`, found `[int, .. 0]`
我的代码如下:
struct Foo {
bar: [int]
}
我正在尝试将其设置为空片:
Foo {
bar: []
};
类型应该正确,但是大小可能不正确。
有任何想法吗?我怀疑这有点小。
在动态大小类型正确实现之前,您不能将裸[T]
作为结构字段使用,即使它们将在实现时也可能不希望使用。
看来您想将数组存储到结构中,对吗?在Rust中有两种方法可以完成此操作,具体取决于谁拥有数组内容。
当struct实例本身应该拥有数据时,最简单的方法是使用Vec<T>
:
struct Foo {
bar: Vec<int>
}
您可以这样创建其实例:
Foo {
bar: vec![1, 2, 3]
}
当struct实例仅应借用数据时,应使用切片&[T]
:
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]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句