作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试遍历所有可能的字节 (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/
有没有办法在没有警告的情况下通过二进制分配获得负数,同时保留其他更有效的警告。还是我想错了? const NEG: i32 = 0b1000_0000_0000_0000_0000_0000_0000
我正在尝试遍历所有可能的字节 (u8) 值。不幸的是,我在 0..256 中的范围文字被转换为 u8 并且 256 溢出: fn foo(byte: u8) { println!("{}",
我是一名优秀的程序员,十分优秀!