在开发应用程序时,我们经常需要将内存中的数据结构保存到磁盘上,以便下次程序启动时可以重新加载。这个过程就叫做数据结构持久化。在 Rust 中,实现这一功能主要依赖于序列化(Serialization)和反序列化(Deserialization)技术。
本教程将手把手教你如何使用 Rust 实现数据结构的持久化,即使你是 Rust 新手,也能轻松上手!我们将围绕 Rust数据结构持久化、Rust序列化、Rust反序列化 和 Rust文件存储 这四个核心概念展开。
序列化 是将内存中的数据结构转换为可以存储或传输的格式(如 JSON、二进制等)的过程。
反序列化 则是将存储的格式还原为原始数据结构的过程。
Rust 标准库本身不包含序列化功能,但社区提供了强大的 crate(包)来实现。最常用的是 serde(用于序列化框架)配合 serde_json(用于 JSON 格式)或 bincode(用于高效二进制格式)。
首先,在你的 Cargo.toml 文件中添加以下依赖:
[dependencies]serde = { version = "1.0", features = ["derive"] }serde_json = "1.0" 为了让结构体支持序列化/反序列化,我们需要使用 #[derive(Serialize, Deserialize)] 属性宏。这由 serde 提供。
use serde::{Serialize, Deserialize};#[derive(Serialize, Deserialize, Debug)]struct User { id: u32, name: String, email: String,} 下面的代码演示如何将一个 User 实例序列化为 JSON 并保存到 user.json 文件中:
use std::fs::File;use std::io::Write;use serde_json;fn main() { let user = User { id: 1, name: "Alice".to_string(), email: "alice@example.com".to_string(), }; // 序列化为 JSON 字符串 let json_data = serde_json::to_string_pretty(&user).unwrap(); // 写入文件 let mut file = File::create("user.json").unwrap(); file.write_all(json_data.as_bytes()).unwrap(); println!("用户数据已保存到 user.json");} 现在我们从 user.json 中读取数据并还原为 User 结构体:
use std::fs::File;use std::io::Read;use serde_json;fn main() { let mut file = File::open("user.json").unwrap(); let mut contents = String::new(); file.read_to_string(&mut contents).unwrap(); // 反序列化 JSON 字符串为 User 结构体 let user: User = serde_json::from_str(&contents).unwrap(); println!("读取到的用户: {:?}", user);} 如果你不需要人类可读的格式,可以使用 bincode 来获得更小的文件体积和更快的速度。
首先在 Cargo.toml 中添加:
bincode = "1.3" 然后修改读写逻辑:
// 写入二进制let encoded: Vec = bincode::serialize(&user).unwrap();std::fs::write("user.bin", encoded).unwrap();// 读取二进制let data = std::fs::read("user.bin").unwrap();let user: User = bincode::deserialize(&data).unwrap(); 通过本教程,你已经掌握了在 Rust 中实现 Rust数据结构持久化 的基本方法。无论是使用 JSON 还是二进制格式,serde 生态都为你提供了强大而灵活的工具。
记住四个关键点:
现在,你可以自信地在自己的 Rust 项目中实现数据持久化功能了!
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122931.html