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 解析器实现

Download history 62/week @ 2024-04-26 11/week @ 2024-05-03 1/week @ 2024-05-10 22/week @ 2024-05-17 3/week @ 2024-05-24 4/week @ 2024-05-31 3/week @ 2024-06-07 3/week @ 2024-06-14 4/week @ 2024-06-21 2/week @ 2024-06-28 37/week @ 2024-07-05 6/week @ 2024-07-12 28/week @ 2024-07-19 267/week @ 2024-07-26 22/week @ 2024-08-02 13/week @ 2024-08-09

每月331次下载
用于 2 crate

MIT/Apache

210KB
3.5K SLoC

Rust 2.5K SLoC // 0.0% comments C++ 877 SLoC // 0.0% comments Shell 16 SLoC // 0.1% comments Pan 11 SLoC // 0.2% comments

hltas

crates.io Documentation

变更日志

用于读取和写入 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 的 serdeSerializeDeserialize 特性。

  • proptest1: 为所有类型实现 proptest 的 proptestArbitrary 特性。仅生成“有效”内容,例如,写入字符串并解析回将工作并提供相同的结果。

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