-->

时序数据库Influx-IOx源码学习三(命令行及配置)

时间:2022-01-26

文章转自:COSCHINA 刘涛华 Influx Iox源码学习 版权归原作者所有,若有侵权请联系:contact@timecho.com






上篇介绍到:InfluxDB-IOx的环境搭建,详情见:https://my.oschina.net/u/3374539/blog/5016798

本章开始,讲解启动的主流程!

打开 "src/main.rs" 文件可以找到下面的代码



在 "main" 方法中映入眼帘的第一行就是 "load_dotenv()" 方法,然后是 "Config::from_args()" 接下来就分别跟踪这两个方法,看明白是怎么工作的。

加载配置文件

在 "README" 文件中,我们可以看到这样一行:


意思就是这个工程使用的配置文件,名字是.env。了解这个特殊的名字之后,我们看代码src/main.rs:276



然后跟踪 "dotenv()" 方法看看如何执行(这里就进入了dotenv这个crate了): 为了方便写,我就直接把所有调用,从上到下的顺序全都写出来了



研究这里的时候,我发现了一个比较好玩儿的东西就是返回值的Result<PathBuf>。标准库的定义中,Result是有两个值,分别是<T,E>。



更详细的rust错误处理,可以参见:https://zhuanlan.zhihu.com/p/109242831

命令行参数

在main方法中我们可以看到第二行,



这是 "influx"使用了 "structopt" 这个 "crate",调用该方法后,程序会根据结构体上的 "#[structopt()]" 中的参数进行执行命令行解析。


下面通过打印出来的例子来对应 "structopt" 中的内容。




可以看到,我们执行了 "Run" 这个变体的 "Subcommand",并且指定了 "Config" 结构体中的 "verbose"  4 次,"IOx" 也成功的识别了。


后面继续学习程序的启动过程,祝玩儿的开心!












扫码关注

关注我们

联系我们

Contact Us

* 为必填信息