8 个重大版本
0.9.0 | 2024年7月28日 |
---|---|
0.8.0 | 2023年7月23日 |
0.7.0 | 2023年1月16日 |
0.6.0 | 2022年9月1日 |
0.1.0 | 2019年12月26日 |
#313 in 解析器实现
每月331次下载
用于 2 crate
210KB
3.5K SLoC
hltas
用于读取和写入 Half-Life TAS 脚本 (.hltas
) 的 crate。
示例
use hltas::{HLTAS, types::{JumpBug, Line, Times}};
let contents = "\
version 1
demo test
frames
------b---|------|------|0.001|-|-|5";
match HLTAS::from_str(&contents) {
Ok(hltas) => {
assert_eq!(hltas.properties.demo.as_deref(), Some("test"));
if let Line::FrameBulk(frame_bulk) = &hltas.lines[0] {
assert_eq!(
frame_bulk.auto_actions.jump_bug,
Some(JumpBug { times: Times::UnlimitedWithinFrameBulk })
);
assert_eq!(&frame_bulk.frame_time, "0.001");
assert_eq!(frame_bulk.frame_count.get(), 5);
} else {
unreachable!()
}
}
// The errors are pretty-printed with context.
Err(error) => println!("{}", error),
}
功能
-
serde1
: 为所有类型实现 serde 的 serde 的Serialize
和Deserialize
特性。 -
proptest1
: 为所有类型实现 proptest 的 proptest 的Arbitrary
特性。仅生成“有效”内容,例如,写入字符串并解析回将工作并提供相同的结果。
C++ 包装器
还包括一个 C++ 包装器,导出与 HLTAS 之前的 C++ 版本相同的 C++ 接口。
使用 CMake 的 C++ 包装器
- 您需要 Rust:要么来自您发行版的软件包,要么来自 rustup。
- 在您的项目
CMakeLists.txt
中,调用add_subdirectory("path/to/hltas")
。 - 链接到
hltas-cpp
目标:target_link_libraries(your-target hltas-cpp)
。
许可证:MIT/Apache-2.0
依赖项
~0.9–1.8MB
~33K SLoC