9 个版本 (4 个重大更新)
0.5.0 | 2023 年 12 月 14 日 |
---|---|
0.4.1 | 2023 年 12 月 6 日 |
0.3.1 | 2023 年 12 月 5 日 |
0.2.2 | 2023 年 12 月 5 日 |
0.1.0 | 2023 年 12 月 1 日 |
#1019 在 解析器实现
每月 120 次下载
55KB
1.5K SLoC
网络铁路 CIF 解析器
使用方法
读取时间表
您可以使用以下代码将 CIF 文件解析到时间表数据库中:
use nr_cif::prelude::*;
use std::fs::File;
let f = File::open("full-or-partial.cif").expect("cannot read file");
let cif_result = parse_cif(f);
match cif_result {
Ok(file) => {
let mut schedule = ScheduleDatabase::new();
let errors = schedule.apply_file(&file);
log::info!("Complete.\n{schedule:#?}\nErrors: {errors:?}");
},
Err(e) => panic!("{e}"),
}
注意: 这并不总是暴露记录中的每个字段。
以原始方式解析数据
您可以使用以下代码将 CIF 文件解析到记录数组中:
use nr_cif::prelude::*;
use std::fs::File;
let f = File::open("full-or-partial.cif").expect("cannot read file");
let cif_result = parse_cif(f);
match cif_result {
Ok(file) => {
for record in file.records() {
// do something with each record
}
},
Err(e) => panic!("{e}"),
}
然后可以手动进一步处理。
功能
功能 | 目的 |
---|---|
serde |
在对象上启用序列化和反序列化。 |
panic-on-first-error |
如果发现解析错误,则引发恐慌。主要适用于测试。 |
依赖项
~1.4–2.2MB
~42K SLoC