#跨平台 #二进制 #ksy #ks #ksc

nightly kaitai

将凯泰结构编译成 Rust 的宏

3 个版本

0.1.2 2021 年 8 月 9 日
0.1.1 2021 年 7 月 12 日
0.1.0 2021 年 7 月 11 日

#1144编码

MIT/Apache

23KB
347 代码行

包含 (Zip 文件, 2KB) tests/files/example.basic

kaitai

Crates.io Documentation Workflow Status Maintenance dependency status codecov

这个包仍然是一个非常正在进行中的项目;它的功能集非常有限。

将凯泰结构编译成 Rust 的宏。

示例

给定以下文件 basic_be.ksy

meta:
  id: basic
  endian: be
seq:
  - id: header
    type: u2
  - id: body
    type: s8
  - id: tail
    type: u4

读取 basic_be 缓冲区的 Rust 代码可能看起来像这样

#[kaitai_source("../tests/formats/basic_be.ksy")]
struct BasicBigEndian;

fn main() -> Result<()> {
    let file = BasicBigEndian::from_file("tests/files/example.basic")?;

    println!("head: {}", file.body);
    println!("body: {}", file.body);
    println!("tail: {}", file.body);
}

语义

提供给 kaitai_source 的文件路径相对于当前文件,类似于模块查找的方式。然而,提供给 from_file 的文件路径相对于项目的根目录,类似于 std::fs::File::open

许可证

许可协议为以下之一

由您选择。

贡献

除非您明确声明,否则您有意提交并包含在作品中的任何贡献,根据 Apache-2.0 许可证的定义,应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~0.6–1MB
~25K SLoC