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

GPL-3.0-or-later

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