使用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

分类: 计算机技术
推荐阅读:
Python实现列表去重的多种方法及性能对比 本文将通过多种方法实现列表(List)去重(将列表中的重复项删除);其中包括使用常规方法去重、set()集和去重、使用enumerate()去重、和使用collections.OrderedDict.fromkeys()实现去重;并编写了测试代码来测试这些去重方法的性能、以及去重后元素的排序是否改变;
python @staticmethod装饰器 @staticmethod 是一个装饰器,用于声明一个静态方法。静态方法是一个属于类而不是属于实例的方法,可以直接通过类名调用,而不需要创建实例。
pg_restore.exe file not found 解决方法 使用pgAdmin时出现类似 pg_restore.exe file not found. Please correct the Binary Path in the Prefer 错误:
Python使用蒙特卡洛法计算圆周率 蒙特卡洛方法通过在单位正方形内随机生成点,并判断这些点是否在单位圆内的比例来估算圆周率。当随机点数量越多时,估算值越趋近于真实值。
WordPress如何禁用Emoji表情 由于WordPress自带的Emoji表情服务需要连接到国外服务器,国内用户访问比较慢、不稳定,影响体验,且大部分用户根本用不到;这个服务应该禁用。
python object()函数 object() 是 Python 的内置函数之一,它返回一个新的 object 对象。这个对象没有任何特殊的属性或方法,它是所有类的基类,即所有 Python 类都直接或间接地继承自 object 类。