2 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2018 年 9 月 28 日 |
---|---|
0.1.0 | 2018 年 9 月 28 日 |
#14 in #rustic
34KB
921 行
jmsn-rs
jmsn-rs 包提供对名为 jsmn 的 C 库的 rustic 接口。jsmn 库是一个 JSON 解析器,正如其作者的描述,它是快速、可移植且简单的。它不进行内存分配,也不构建带有指针的节点树,而是填充一个结构体数组,并通过数组索引来表示子项。
我最喜欢这个库的地方是它的简单性——它恰好包含 2 个枚举、2 个结构和 2 个函数,总共 1 个头文件和 1 个 .c 文件。
rustic 包装包括使用 bindgen 生成原始绑定,这些绑定可在 raw 模块中找到,然后使用标准的 Rust 命名约定对这些绑定进行包装。这意味着使用切片而不是指针和长度,以及从 jsmn_parse 返回一个 Result 而不是可以表示错误代码或计数的数字。
特性
此库提供两个特性,"parent-links" 和 "strict",可以在将 jsmn-rs 添加到 Cargo.toml 作为依赖项时设置。这将为编译 jsmn 和生成 jsmn 绑定添加预处理器指令 JSMN_PARENT_LINKS 和 JSMN_STRICT。
我已经在没有 strict 设置的情况下使用此库作为快速读取配置文件的一种方式,我也看到了一些基准测试表明 parent-links 可以极大地提高性能。
待办事项
理想情况下,应该在 64 位和 32 位机器上测试,因为我不确定 C 源代码中使用的 "int" 是否会在这里引起问题。我尝试使用 isize 和 usize 来解决这个问题,但对于某些转换,可能仍然存在问题。
此外,此库的测试非常少,示例代码也很少。
依赖关系
~0–2.1MB
~43K SLoC