【发布时间】:2023-03-16 04:38:01
【问题描述】:
我有无法编译的代码:
let vec1 = [1i, 2i, 3i];
let vec2 = [4i, 5i];
let v: &[&[int]] = [&vec1, &vec2];
我想要的很清楚:我想指出 v 包含 &[int] 项,即对不同大小的数组的引用。但是,无论我如何标记 v 的类型,都会出现编译器错误。以上状态
tst.rs:8:29: 8:34 error: mismatched types: expected `&[int, ..3]`, found `&[int, ..2]` (expected array, found array)
tst.rs:8 let v: &[&[int]] = [&vec1, &vec2];
^~~~~
tst.rs:8:21: 8:35 error: mismatched types: expected `&[&[int]]`, found `[&[int, ..3], ..2]` (expected &-ptr, found array)
tst.rs:8 let v: &[&[int]] = [&vec1, &vec2];
^~~~~~~~~~~~~~
这里的解决方案是什么?
【问题讨论】:
-
您只是缺少
&。let v: &[&[int]] = &[&vec1, &vec2];(注意 = 后面的 &)有效。但是,根据您计划如何使用 v,您可能会遇到生命周期问题。