11 个版本 (6 个破坏性版本)
0.7.0 | 2024年4月24日 |
---|---|
0.6.0 | 2023年9月28日 |
0.5.1 | 2021年11月3日 |
0.4.1 | 2021年3月1日 |
#523 在 解析器实现 中
每月下载量 48 次
用于 4 crates
47KB
986 行
hepmc2
读取和写入 hepmc2
格式的文件,也称为 IO_GenEvent
。
注意事项
此 crate 受 HepMC3 库中 ReaderAsciiHepMC2
代码的启发,版本 3.2.0。目标是完全兼容,但请注意,当前的测试并不全面。
示例
// Read events from `events_in.hepmc2` and write them to `events_out.hepmc2`
use hepmc2::{Reader, Writer};
use std::io::BufReader;
use std::fs::File;
let input = BufReader::new(File::open("events_in.hepmc2")?);
let in_events = Reader::from(input);
let output = File::create("events_out.hepmc2")?;
let mut writer = Writer::try_from(output)?;
for event in in_events {
let event = event?;
println!("Current cross section: {}", event.xs);
writer.write(&event)?
}
writer.finish()?;
异步 API
默认情况下,此 crate 启用了 sync
功能,该功能公开了同步 API。但是,您可以通过禁用 sync
功能并启用 tokio
功能来切换到使用基于 tokio
的异步 API。
您可以在 crate 的根目录中运行以下命令之一
cargo add hepmc2 --no-default-features -F tokio
或者确保 Cargo.toml
中存在类似以下行
hepmc2 = { version = "0.6.0", default-features = false, features = ["tokio"] }
异步 API 与同步 API 完全相同,但 IO 操作将返回 futures,您将需要像往常一样调用 await
。
示例
// Read events from `events_in.hepmc2` and write them to `events_out.hepmc2`
use hepmc2::{Reader, Writer};
use tokio::io::BufReader;
use tokio::fs::File;
let input = BufReader::new(File::open("events_in.hepmc2").await?);
let mut in_events = Reader::from(input);
let output = File::create("events_out.hepmc2").await?;
let mut writer = Writer::try_from(output).await?;
while let Some(event) = in_events.next().await {
let event = event?;
println!("Current cross section: {}", event.xs);
writer.write(&event).await?
}
writer.finish().await?;
许可证: GPL-3.0-or-later
依赖项
~1.3–3.5MB
~64K SLoC