小编Ste*_*eve的帖子

迭代 u8 的所有值时出现文字超出范围警告

据我了解,循环中的范围for是包含下限和排除上限的。这在以下代码中引入了一个问题:

fn main() {
    let a: u8 = 4;

    for num in 0..256 {
        if num == a {
            println!("match found");
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想从 0 到 255 循环 256 次,这符合u8. 但由于范围不包括上限,因此我必须将 256 作为进程 255 的限制。因此,编译器会给出以下警告。

fn main() {
    let a: u8 = 4;

    for num in 0..256 {
        if num == a {
            println!("match found");
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,程序会跳过循环for

在我看来,编译器必须忽略范围中的 256 并接受该范围作为u8范围。这是对的吗?还有其他方法给出范围吗?

rust

4
推荐指数
2
解决办法
1735
查看次数

如何在Rust的稳定释放上使用serde

我知道serde是Rust世界中首选的序列化工具.但是,它似乎使用了稳定通道中不存在的功能.这是否意味着我在使用Rust稳定版时不能使用serde?我错过了什么吗?例如:

#![feature(proc_macro)]

#[macro_use]
extern crate serde_derive;

extern crate serde_json;

#[derive(Serialize, Deserialize, Debug)]
struct Point {
    x: i32,
    y: i32,
}
Run Code Online (Sandbox Code Playgroud)

rust serde

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

标签 统计

rust ×2

serde ×1