gpt4 book ai didi

rust - 为了能够将 `u8`用作向量中的索引,我必须强制转换什么?

转载 作者:行者123 更新时间:2023-12-03 11:48:58 26 4
gpt4 key购买 nike

我在Rust中有一个2D向量,我正在尝试使用动态u8变量进行索引。我正在尝试做的一个例子如下:

fn main() {
let mut vec2d: Vec<Vec<u8>> = Vec::new();

let row: u8 = 1;
let col: u8 = 2;

for i in 0..4 {
let mut rowVec: Vec<u8> = Vec::new();
for j in 0..4 {
rowVec.push(j as u8);
}
vec2d.push(rowVec);
}

println!("{}", vec2d[row][col]);
}

但是,我得到了错误

error: the trait `core::ops::Index<u8>` is not implemented for the type `collections::vec::Vec<collections::vec::Vec<u8>>` [E0277]

在更高版本的Rust中,我得到

error[E0277]: the trait bound `u8: std::slice::SliceIndex<[std::vec::Vec<u8>]>` is not satisfied
--> src/main.rs:15:20
|
15 | println!("{}", vec2d[row][col]);
| ^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `std::slice::SliceIndex<[std::vec::Vec<u8>]>` is not implemented for `u8`
= note: required because of the requirements on the impl of `std::ops::Index<u8>` for `std::vec::Vec<std::vec::Vec<u8>>`

我必须将 u8强制转换为什么才能将其用作向量中的索引?

最佳答案

索引的类型为usizeusize用于集合的大小或集合的索引。它表示架构上的 native 指针大小。

这是您需要使用它才能正常工作的方法:

println!("{}", vec2d[usize::from(row)][usize::from(col)]);

关于rust - 为了能够将 `u8`用作向量中的索引,我必须强制转换什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61416299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com