据我了解,循环中的范围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
范围。这是对的吗?还有其他方法给出范围吗?
我知道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)