使用Rust serde处理文件(读取、保存)

本文使用serde_json为例;展示Rust serde如何读取文件、保存文件;

从文件中读取

serde_json为例;可使用serde_json::from_reader方法从JSON文件中读取数据;

将以下json数据保存为config.json文件:

{
    "ip": "127.0.0.1",
    "port": 80
}

示例代码:

use serde::{Deserialize, Serialize};
use std::fs::File;
use std::io::BufReader;

#[derive(Deserialize, Serialize)]
struct Config {
    ip: String,
    port: u16,
}

fn main() {

    let file = File::open("config.json").unwrap();

    let reader = BufReader::new(file);

    let config: Config = serde_json::from_reader(reader).unwrap();

    println!("{}:{}", config.ip,config.port);

}

保存为文件

serde_json为例;可使用serde_json::to_writer方法将一个Rust结构体写入到JSON文件;

use serde::{Deserialize, Serialize};
use std::fs::File;
use std::io::BufWriter;

#[derive(Deserialize, Serialize)]
struct Config {
    ip: String,
    port: u16,
}

fn main() {

    let config = Config {
        ip : String::from("127.0.0.1"),
        port : 80,
    };

    let file = File::create("saved.json").unwrap();
    let writer = BufWriter::new(file);

    serde_json::to_writer(writer, &config).unwrap();
}

程序运行效果

程序运行后,会生成一个saved.json文件,并包含以下文本信息:

{"ip":"127.0.0.1","port":80}

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/rust-serde/processing-files-with-serde.html

分类: 计算机技术
推荐阅读:
如何删除一个已发布的crate 实际上,我们可以联系crates.io的技术支持团队,要求删除一些没有意义的crate,这些crate通常没人使用,不包含有意义的代码;
Rust解析YAML,结构体序列化和反序列化 serde_yaml 是 Rust 的一个 crate,提供了支持将数据结构序列化为 YAML 格式,以及将 YAML 格式反序列化为 Rust 数据结构的功能。
未定义标识符 CV_BayerGR2BGR 解决方法 CV_BayerGR2BGR 是 OpenCV 中的颜色转换常量,值为49,在文件 opencv2/imgproc/types_c.h 中定义;提示未定义标识符CV_BayerGR2BGR是因为没有引入opencv2/imgproc/types_c.h这个头文件;
gin及其依赖库完整下载和安装方法 因为在线安装Gin需要科学访问外网,所以你无法使用最简单的方式安装Gin;虽然有其它方法可以安装成功,但那些方法对萌新朋友们不够友好。所以我打包了Gin及其依赖库并上传到了百度网盘,并附上了安装方法。
Python delattr()函数 在Python中,delattr()函数用于删除对象的属性。它接受两个参数:第一个参数是要删除属性的对象,第二个参数是要删除的属性的名称。如果对象中不存在指定的属性,将会抛出AttributeError异常。
配置Nginx实现简单的反盗链 本文通过Nginx的配置指令valid_referers来实现简单的图片和其它类型文件的防盗链。