小编Lia*_*ink的帖子

在 Rust 中获取常量数组长度

由于 Rust 数组长度在编译时已知,我如何获得该长度作为常量整数?可以获得与整个数组对应的切片的非常量 len()。rust 似乎不像 c++ 那样有开始和结束迭代器,而且我不清楚是否可以获取字节长度并将其除以元素的字节大小。我仍然是 Rust 的菜鸟,所以我可能错过了一些东西,但过去几天我一直在寻找一种方法来做到这一点。我知道克隆数组是可能的,但这仅在我想要克隆时才有用,并且与仅从数组类型获取长度相比,迭代数组的每个元素会很慢。我怎样才能做到这一点?Rust 文档说数组的类型签名是[ele_type; ele_number],因此编译器在创建后会跟踪数组的长度。我知道std::any::type_name::()可以用来打印变量的类型,但它的输出不是 const。

\n

我知道已经提出了一个相关问题,但现有答案没有回答我的问题,而且该问题很旧(从 2017 年开始),因此情况可能已经发生变化,并且不太可能向人们建议。

\n

编辑 1添加示例:

\n
fn main()\n{\n    let test_arr = [0.f64; 10];\n    do_something(test_arr);\n\n}\n\nfn do_something<const C: usize>(array: [f64; C])\n{\n    // This causes an error because len() returns a nonconst uint,\n    // and so can\xe2\x80\x99t be used to create new arrays\n    // C can also not be used because it counts as external\n    let triple_size_array = [f64; array.len()*3];\n}\n
Run Code Online (Sandbox Code Playgroud)\n

编辑2 …

arrays types iterator rust

1
推荐指数
1
解决办法
2608
查看次数

标签 统计

arrays ×1

iterator ×1

rust ×1

types ×1