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