如何将结构化数据保存到文件?

2023-12-22

我的程序包含大量具有恒定输出的预计算。我想避免在下次运行程序时运行此预计算。因此,我想在程序第一次运行时将其输出保存到文件中,并在下次运行程序时加载它。

输出包含我自己定义的非常见数据类型、对象和结构。

我该如何去做呢?


(反)序列化 Rust 对象的事实上的标准方法是serde https://crates.io/crates/serde。给定一个 Rust 结构(或枚举),它会生成一个中间表示,然后可以将其转换为所需的格式(例如 json)。给定一个结构:

use serde::{Serialize, Deserialize};

// here the "magic" conversion is generated
#[derive(Debug, Serialize, Deserialize)]
struct T {
    i: i32,
    f: f64,
}

您可以使用简单的 oneliner 获得 json 表示形式:

let t = T { i: 1, f: 321.456 };
println!("{}", serde_json::to_string(&t).unwrap());
// prints `{"i":1,"f":321.456}`

以及转换回来:

let t: T = serde_json::from_str(r#"{"i":1,"f":321.456}"#).unwrap();
println!("i: {}, f: {}", t.i, t.f);
// prints i: 1, f: 321.456

是游乐场链接。这是一个例子serde_json https://crates.io/crates/serde_json用法,但您可能会找到其他更合适的库,例如serde_cbor https://crates.io/crates/serde_cbor, serde_yaml https://crates.io/crates/serde_yaml, bincode https://crates.io/crates/bincode, serde_xml https://crates.io/crates/serde_xml还有很多很多其他的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将结构化数据保存到文件? 的相关文章

随机推荐

  • Flex 4 组显示效果/隐藏效果

    我有一个组 我想在显示和隐藏时执行擦除效果
  • Drupal 7 在“首次加载”时太慢

    我希望有人能帮助我解决这个 Drupal 7 问题 我注意到 当我 第一次 输入网站地址时 加载时间非常慢 开始加载文件和显示内容大约需要 20 平均 秒 好像有一些延迟 然而 在那段时间之后 速度非常快 一切都很好 页面加载后 我们可以快
  • 在 NLTK 解析器中使用整数/日期作为终端

    我正在尝试使用 NLTK 中的 Earley 解析器来解析句子 例如 如果日期早于 12 21 2010 则序列号 10 为此 我尝试编写一个 CFG 但问题是我需要使用日期和整数的通用格式作为终端 而不是特定值 有没有什么方法可以将生产规
  • 列出SD卡中的所有图像

    您好 我正在开发 Android Gallery 应用程序 我正在从 SD 卡中的文件夹中获取图像并将其显示在网格视图上 如下所示 public static ArrayList
  • Linq - 如何在变量中存储“where条件”

    是否可以将此 linq 语句中的Where条件存储在变量中 Func
  • 使用 z-index 覆盖 DIV

    我试图在整个页面上覆盖一个 div 以显示弹出窗口 问题是 它不会覆盖整个页面 这是代码的近似值 div div style width 100 height 100 Overlay div Contents of container 1
  • angularjs 按顺序链 http post

    在我的应用程序中 我将数据存储在本地存储中并在后台触发异步 http post 成功发布后 发布的数据将从本地存储中删除 当 http post 正在进行时 可能会有更多数据添加到本地存储中 因此我需要将 post 排队并按顺序处理它 因为
  • 在 ABPeoplePickerNavigationController 上取消选择RowAtIndexPath

    我在我的应用程序中将 ABPeoplePickerNavigationController 显示为选项卡 用户单击姓名 然后单击电子邮件地址 然后我对电子邮件地址执行某些操作 之后 我希望他们选择的人和财产淡出 不突出显示 在普通表中 我会
  • getOutputStream() 上的设备上“没有到主机的路由” - 无线连接

    private String urlPost http 192 168 1 66 8080 DataCollectionServlet Override protected void doWakefulWork Intent intent
  • 使用泛型类型构造函数时,Null (?) 运算符返回不正确的值。网络

    使用通用类型和空运算符时 我遇到一些奇怪的行为 为什么 obj2 CurrentDate 返回的日期值在使用时看起来不正确 简写 如果我在属性中长期使用 null 运算符 if 那么它会返回正确的预期值 我以为 相当于 if 表达式 ret
  • 配置 Kafka 以接受来自 Docker 内部和外部的客户端

    我正在 Docker 网络中运行 Apache Kafka Kafka Broker 的容器称为 docker kafka 我想要的是允许来自另一个 docker 容器以及 docker 主机的 Kafka 客户端的连接 docker ka
  • 复制关系表数据

    我希望我在这个问题上不会太啰嗦 我只是想确保我所问的内容完全清楚 我认为这相当令人困惑 我有一个数据库 其中有一堆表 并且设置了所有外键约束 关系有时会深达几张表 并且也存在子级与多个父表相关的情况 我想插入 顶级 表行之一的副本以及与其相
  • 体系结构 x86_64 的未定义符号:OS X、Boost Log、CMake

    链接的另一个问题 操作系统 X 10 9 5 x64 跨平台项目正在使用 CMake 工具链构建 使用升压 将所有可执行文件与 Boost Log 链接时出错 确实找到了 BOOST PATH 单元测试与 Boost Test 成功链接 第
  • Java - 通过浏览器/URL 连接到 ServerSocket

    我正在编写一个软件 并且受到无法使用套接字连接到使用 ServerSocket 的 java 应用程序的限制 我想我应该尝试使用 URL 连接 因为可以定义要连接到的端口 e g 127 0 0 1 62666 我的服务器应用程序正在侦听连
  • 无法建立到服务器的链接

    一个非常简单的插入函数 它给出了一些令人讨厌的错误 Like Warning mysql query Access denied for user one com using password NO in customers be be h
  • 编写一个程序来抓取论坛

    我需要编写一个程序来抓取论坛 我应该使用 Scrapy 框架用 Python 编写程序还是应该使用 Php cURL 还有与 Scrapy 相当的 Php 吗 Thanks 我会选择 Python 因为它具有卓越的 libxml2 绑定 特
  • 如何从unix连接到oracle数据库

    我正在尝试从我的 UNIX 机器连接到 Oracle 数据库 总的来说 我对剧本写作很陌生 我知道如何浏览unix并编写了基本脚本 读取 显示 并使用bash命令执行它们 我还知道如何查看 unix 中的变量 用户和系统 你能告诉我需要做什
  • Django 多项选择字段/复选框选择多个

    我有一个 Django 应用程序 想要在用户的个人资料中显示多项选择复选框 然后他们将能够选择多个项目 这是我的 models py 的简化版本 from profiles choices import SAMPLE CHOICES cla
  • 根据局部最小值/最大值计算累积增长/下降

    我正在学习 R 及其通过 quantmod lib 在交易任务中的应用 并定期浏览社区 从这里获得很多新知识和技巧 我对 R 的总体印象 特别是 quantmod lib 它非常棒 此时我需要经验丰富的 R 用户的帮助 我正在使用通过 ge
  • 如何将结构化数据保存到文件?

    我的程序包含大量具有恒定输出的预计算 我想避免在下次运行程序时运行此预计算 因此 我想在程序第一次运行时将其输出保存到文件中 并在下次运行程序时加载它 输出包含我自己定义的非常见数据类型 对象和结构 我该如何去做呢 反 序列化 Rust 对