gpt4 book ai didi

rust - 如何迭代所有字节值(overflowing_literals in `0..256`)

转载 作者:行者123 更新时间:2023-11-29 07:52:30 26 4
gpt4 key购买 nike

我正在尝试遍历所有可能的字节 (u8) 值。不幸的是,我在 0..256 中的范围文字被转换为 u8 并且 256 溢出:

fn foo(byte: u8) {
println!("{}", byte);
}

fn main() {
for byte in 0..256 {
foo(byte);
println!("Never executed.");
}
for byte in 0..1 {
foo(byte);
println!("Executed once.");
}
}

以上编译:

warning: literal out of range for u8
--> src/main.rs:6:20
|
6 | for byte in 0..256 {
| ^^^
|
= note: #[warn(overflowing_literals)] on by default

第一个循环体根本不会执行。

我的解决方法非常难看,而且因为转换而感觉很脆弱:

for short in 0..256 {
let _explicit_type: u16 = short;
foo(short as u8);
}

有没有更好的办法?

最佳答案

从 Rust 1.26 开始,包含范围使用语法 ..= 稳定,因此您可以将其写为:

for byte in 0..=255 {
foo(byte);
}

关于rust - 如何迭代所有字节值(overflowing_literals in `0..256`),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32296410/

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