【发布时间】:2021-02-10 08:24:04
【问题描述】:
我正在尝试访问数组的元素。我确信我尝试使用的类型足以索引整个数组,而 64 位索引是多余的。
我在 C 和 C++ 方面有少量经验,我知道那里有可能。
有几点不确定,想问一下:
- 这是一种设计选择吗?
- 在尝试访问数组元素时,C 和 C++ 是否将类型转换为
usize? - 我可以说服/强制 Rust 使用另一种类型来访问数组元素吗?
- 访问较小类型的元素是否更快? (例如,是 速度
usizeu8?)
不工作的 Rust 代码
fn main() {
let some_array = [10; 255];
let some_index: u8 = 255;
println!("{}", some_array[some_index])
}
工作 C 代码
int main() {
char array[255] = {0};
char index = 12;
printf("Element: %d", array[index]);
}
【问题讨论】:
-
使用
u8访问通常会更慢,因为您经常需要添加从u8到32 位或64 位的转换步骤。这就是为什么 C++ 有uint_fast8_t类型,通常是 32 位类型。