我想创建一个这样的矢量数组
let v: [Vec<u8>; 10] = [Vec::new(); 10];
Run Code Online (Sandbox Code Playgroud)
但是,编译器给了我这个错误:
错误:
core::kinds::Copy该类型没有实现特征collections::vec::Vec<u8>
trait Bar {
fn bar(&self);
}
enum Foo<T: Bar> {
F1,
F2(T)
}
struct Something;
impl Bar for Something {
fn bar(&self) {
}
}
fn main() {
let a = Foo::F2(Something); //<== this works fine.
let b = Foo::F1; //<== gives a compilation error.
}
Run Code Online (Sandbox Code Playgroud)
编译错误E0282:无法推断出足够的类型信息_; 需要输入注释或通用参数绑定.
我理解为什么编译器抱怨,但似乎无法弄清楚如何做到这一点,而不必在F1情况下为T分配类型.
对于一维数组,可以从固定大小的数组转换为切片,但是对于二维数组来说,这是否可以以一种简单的方式实现?
fn foo(r: &[&[usize]]) { }
let r = [[0usize; 10]; 10];
foo(&r); //<== error expected type `&[&[usize]]` found type `&[[usize; 10]; 10]`
Run Code Online (Sandbox Code Playgroud) rust ×3