Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 是否可以声明没有显式长度的数组?_Arrays_Rust - Fatal编程技术网

Arrays 是否可以声明没有显式长度的数组?

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在本例中)是隐式的,因

在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
在本例中)是隐式的,因为数组中有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
并指定项目的类型相对长度单位。