Arrays 是否可以声明没有显式长度的数组?
在Rust中,可以声明具有特定大小的数组:Arrays 是否可以声明没有显式长度的数组?,arrays,rust,Arrays,Rust,在Rust中,可以声明具有特定大小的数组: struct Vector(f64, f64); fn main() { let points: [Vector; 3] = [ Vector(1.0, 1.0), Vector(5.0, 5.0), Vector(0.0, 0.0), ]; println!("Length is {}\n", points.len()); } 有没有办法使长度(3在本例中)是隐式的,因
struct Vector(f64, f64);
fn main() {
let points: [Vector; 3] = [
Vector(1.0, 1.0),
Vector(5.0, 5.0),
Vector(0.0, 0.0),
];
println!("Length is {}\n", points.len());
}
有没有办法使长度(3
在本例中)是隐式的,因为数组中有3个元素。类似于在C中可以执行的操作:
typedef双向量[2];
向量点[]={{1,1},{5,5},{0,0};
printf(“长度为%d\n”,大小(*点)/大小(点));
请注意,这是一个绝对的初学者问题。从Rust 1.10开始,答案是否定的,基于一系列快速测试:
let points = [ ... ]; // OK
let points: [_ ; 3] = [ ... ]; // OK
let points: [Vector; _] = [ ... ]; // REJECTED
let points: [Vector; 3] = [ ... ]; // OK
在Rust中,\uuu
是要求编译器为您填空的简单方法。不幸的是,它没有被接受而不是3
:编译器非常严厉地抱怨它需要一个表达式
这可能并不太令人惊讶,因为数组目前是一种特殊情况:Rust泛型还不允许使用非类型泛型参数,因此针对数组的编译器“hack”是有限的,这是可以理解的
对于好奇的人来说,确切的错误是:
错误:应为表达式,已找到`_`
--> :4:21
4 |>让点:[;]=[
|>
注意:现在等待其他人证明我错了:)从Rust 1.10开始,根据一系列快速测试,答案是否定的:
let points = [ ... ]; // OK
let points: [_ ; 3] = [ ... ]; // OK
let points: [Vector; _] = [ ... ]; // REJECTED
let points: [Vector; 3] = [ ... ]; // OK
在Rust中,\uuu
是要求编译器为您填空的简单方法。不幸的是,它没有被接受,而不是3
:编译器非常严厉地抱怨它需要一个表达式
这可能并不太令人惊讶,因为数组目前是一种特殊情况:Rust泛型还不允许使用非类型泛型参数,因此针对数组的编译器“hack”是有限的,这是可以理解的
对于好奇的人来说,确切的错误是:
错误:应为表达式,已找到`_`
--> :4:21
4 |>让点:[;]=[
|>
注意:现在等待其他人证明我错了:)在这种情况下,您可以跳过完整的类型注释,但我认为您不能跳过
3
并指定项目的类型。在这种情况下,您可以跳过完整的类型注释,但我认为您不能跳过3
并指定项目的类型相对长度单位。