Aquacolor

Aquacolor



Rust三度【3】——tokio和serde

Gumdrop · 2026-04-10 · 2浏览 · 未分类


文章目录
#

tokio

可以选择所有features

# cargo.toml
[dependencies]
tokio = { version = "1.50.0", features = ["full"] }

使用时,fn main要求

#[tokio::main]
async fn main() -> Result<()> {
	
}

在其他async函数内部,可以对那些,返回值是tokio中类型,如Tcplistener、Tcpstream的,链式使用await等关键字

let listener = Tcplistener::bind(addr).await?;
match listener.accept().await {

}

注意,async fn相当于一个fn返回一个future类型,因此有await关键字。

切换async代码块,只会发生在当前的运行到达await并且阻塞时。

serde和serde_json

serde是序列化库,而从rust数据结构到具体的数据结构通过serde_json等实现。

添加项目依赖

[dependencies]
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"

如果不添加derive feature,那么由于不能使用属性#[derive(Serialize, Deserialize)],自定义数据结构将默认不能被序列化和反序列化。

use serde::{Serialize, Deserialize};
use serde_json::Result;

fn main() -> Result<()> {
    let data = r#"
        {
            "name": "John Doe",
            "age": 30,
            "is_student": false
        }
    "#;

    #[derive(Serialize, Deserialize, Debug)]
    struct Person {
        name: String,
        age: u32,
        is_student: bool,
    }

    let person: Person = serde_json::from_str(data)?;
    println!("{:?}", person);

    let str = serde_json::to_string(&person)?;
    println!("{}", str);

    Ok(())
}

其中,from_str将json文本转成Person对象,而to_string将Person对象转成json文本



©

comment 评论区

添加新评论

face表情



  • ©2026 bilibili.com

textsms
内容不能为空
昵称不能为空
email
邮件地址格式错误
web
beach_access
验证码不能为空
keyboard发表评论


star_outline 咱快来抢个沙发吧!




©2026 Aquacolor

Theme Romanticism2.2 by Akashi
Powered by Typecho