2个版本
0.0.4 | 2022年9月28日 |
---|---|
0.0.3 | 2022年9月22日 |
#954 in 编码
110KB
3K SLoC
serde_json_merge
递归合并、索引、迭代和排序serde_json::Value
。
此库支持使用DFS和BFS遍历就地合并和排序,与大多数使用递归且可能发生栈溢出的实现不同。
[dependencies]
serde_json_merge = "0"
用法
示例
cargo run --example async_fs --features async -- --path ./
cargo run --example sync_fs --features sync,rayon -- --path ./
文档
RUSTDOCFLAGS="--cfg docsrs" cargo +nightly doc --all-features
代码检查
cargo feature-combinations clippy --fail-fast --pedantic --tests --benches --examples -- -Dclippy::all -Dclippy::pedantic
cargo clippy --tests --benches --examples -- -Dclippy::all -Dclippy::pedantic
基准测试
cargo install cargo-criterion
# full benchmark suite
cargo criterion --features full
CI的基准测试报告可在此处找到。
致谢
在我为另一个项目编写此crate并将其发布之后,我发现json_value_merge。
查看它后,我添加了受他们merge_in
API启发的merge_index
。
TODO
-
编写基准测试
-
添加globbing迭代器
-
添加键和值的迭代器
-
实现带有索引的排序值
-
实现BFS
-
使用par-dfs添加rayon支持
-
编写文档
-
在文档中添加示例
完成
- 内联一切
- 我们真的需要any类型吗?现在看起来很无用 :(
- 也许可以用它们来定义非常精确的类型?
- 为合并添加自定义比较器
- 将排序拆分为额外模块
- 实现不稳定的排序
- 为排序和合并添加功能门
- 添加更多针对类型等的测试
- 部分eq可以编写在顶层
- 为dfs添加限制
- 不暴露Value的包装器,而是使用扩展
- 为递归合并添加深度参数
依赖
~4.5–6MB
~116K SLoC