Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Rust 有没有办法强制两个参数切片具有相同的长度?_Rust - Fatal编程技术网

Rust 有没有办法强制两个参数切片具有相同的长度?

Rust 有没有办法强制两个参数切片具有相同的长度?,rust,Rust,如果我想这样定义一个函数: fn f(in_slice: &[T], out_slice: &mut [T]){ } 有没有办法保证编译时两个片的长度相同?没有。没有,因为编译器在编译时不知道长度。还没有。在泛型中,我们可能会在某个时候使用uints,之后它应该成为可能,比如: fn f<T, static N: uint>(in_slice: &[T, ..N], out_slice: &mut [T, ..N]) { ... } fnf(入片:

如果我想这样定义一个函数:

fn f(in_slice: &[T], out_slice: &mut [T]){
}

有没有办法保证编译时两个片的长度相同?

没有。

没有,因为编译器在编译时不知道长度。

还没有。在泛型中,我们可能会在某个时候使用
uint
s,之后它应该成为可能,比如:

fn f<T, static N: uint>(in_slice: &[T, ..N], out_slice: &mut [T, ..N]) { ... }
fnf(入片:&[T,…N],出片:&mut[T,…N]){…}

无论这个答案的分数是50分还是-50分,都是简单的事实。这不是答案。尝试添加原因。@bjb568:当然是答案。像“正在被请求”这样的东西甚至不是一个模糊的通用语言特性——绝大多数专业程序员从未在可能的情况下使用过编程语言。没有什么可以解释为什么它和其他正常语言一样。2个字符不能作为SE的答案。另一种可能是你评论说你不能,并问OP为什么要这么做,因为这看起来像是X/Y问题。我知道rust不是独立类型的。但我认为可能有一种方法可以使函数成为切片中元素数量的通用函数。像fn f(in_-slice&[T,N],out_-slice&[T,N])之类的东西。这仍然不一定会做完全正确的事情:它会将指针指向编译时已知的固定长度数组,这意味着您必须始终传递
。。N
,并且永远无法处理已擦除的
&[t]
版本(因为对于任意
v
,无法编写从
v:&[t]
&[t,…v.len()]
的函数。是的。我对此有一个解决方案,但这一差距不足以解释这一点你可以把它添加到你的答案中。我将提交一份RFC,它不会很短。