1 个不稳定版本
新 0.1.3 | 2024 年 8 月 24 日 |
---|
#4 在 #path-buf
6.5MB
2K SLoC
WPILIB DataLog 格式的 Rust 实现
规范可以在 这里 找到
使用方法
写入
use std::{path::PathBuf, fs:File};
use frclib_datalog::DataLogWriter;
use frclib_core::value::FrcValue;
let path = PathBuf::from("path/to/file");
let reader = DataLogWriter::try_new(File::create(path).unwrap(), Default::default())
.expect("Failed to create writer");
let entry = writer.get_entry::<i32>("test", None).expect("Failed to get entry");
writer.write_timestamped(entry, 10, now() - 5).expect("Failed to write entry");
writer.write_timestamped(entry, 20, now() + 20).expect("Failed to write entry");
writer.write_timestamped(entry, 30, now() + 50).expect("Failed to write entry");
读取
use std::{path::PathBuf, fs:File};
use frclib_datalog::DataLogReader;
use frclib_core::value::FrcValue;
let path = PathBuf::from("path/to/file");
let reader = DataLogReader::try_new(File::open(path).unwrap(), Default::default())
.expect("Failed to create reader");
reader.read_entry("entry_name").into_iter().for_each(|value| {
match value.value {
FrcValue::Int(i) => println!("Int: {}", i),
_ => println!("Not an int")
}
});
基准测试
尚未设置正式的测试,但在我机器(r7 5800x 移动)上,它可以在 0.7 秒内读取和解码 103MB 的文件,在 0.11 秒内读取和解码 17MB 的文件