写点什么

文盘 Rust -- 配置文件解析

  • 2022 年 8 月 05 日
  • 本文字数:684 字

    阅读完需:约 2 分钟

作者: jiashiwen 原文来源:https://tidb.net/blog/1074d805


notice”Rust is a trademark of the Mozilla Foundation in the US and other countries.”



处理配置文件是用用开发的常规操作。成熟的开发语言都有自己处理配置文件的套路。golang 有 viper 这样的成熟第三方库来处理配置文件。rust 的第三方库并不成熟。这篇文章我们来聊聊 rust 如何处理配置文件。

处理 yaml 配置文件的流程

配置文件的作用是一系列应用程序相应功能的开关。在应用启动前配置,应用启动时加载,以备运行时使用。我们依旧用interactcli-rs 为例,说明一下配置文件的处理过程。解析配置文件的主要逻辑在 src/configure 目录。


  • 定义 config 结构体首先,定义一个结构体用来承载配置项。由于 Config struct 需要与 yaml 文件交互,我们定义一个具备序列化与反序列化能力的结构体

  • 为 Config 结构体定义必要的功能

  • 利用 lazy_static 初始化配置项单例

  • 加载配置文件interactcli-rs 是一个命令行程序。加载配置文件的策略为:当指定配置文件位置时,则按给定路径加载配置;如果未指定配置文件则按照默认路径加载,此时若默认配置文件不存在则终止程序。src/cmd/rootcmd.rs 中的 cmd_match 函数包含上面的逻辑。

后记

手工处理配置文件还是比较繁琐。尤其在配置文件的书写上,必须明确配置每一个配置项,即使配置项为空也需填写。为了保证配置文件的配置项齐全,我们为 Config struct 定义了 flush_to_file 函数,用来生成配置问题。由于 rust 的生态较 golang 以及 java 的生态还很年轻,第三方的工具包不及两者完善。在配置文件的处理上比较繁琐,很多地方需要手工处理,但是已基本满足要求。咱们下期见。


发布于: 刚刚阅读数: 3
用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
文盘Rust -- 配置文件解析_开发语言_TiDB 社区干货传送门_InfoQ写作社区