2 个不稳定版本
0.2.0 | 2024 年 7 月 31 日 |
---|---|
0.1.0 | 2024 年 7 月 20 日 |
#316 在 算法
每月 252 次下载
130KB
1K SLoC
async_bagit
Rust 库,用于创建和读取 BagIt 容器。
在您的 crate 中使用的要求
- Tokio 运行时
- Nightly Rust,直到以下表格中显示的功能稳定,抱歉。在此期间,请随时提出补丁,以便在稳定版本上实现一些功能!
Nightly 功能 | 跟踪问题 |
---|---|
iter_next_chunk |
#98326 |
使用 crate 的注意事项
校验和算法
BagIt 规范要求在包中的有效负载内容上使用校验和。虽然这个 crate 处理校验和并且可以计算文件的校验和,但这个 crate 不包括 任何校验和算法。我不想强迫 crate 消费者使用校验和 x 或 y,您将需要提供算法。
任何实现 digest
crate 中的 Digest
trait 的结构体都将被接受用于校验和计算。Rust 生态系统中的大多数算法已经实现了这个 trait。我不是专家,但截至本文撰写时(2024 年 7 月),我建议使用 BLAKE3、BLAKE2 或 SHA512,按此顺序。
不对文件进行特殊处理
对于打开包,该 crate 仅读取包含 BagIt 包的文件系统上的目录,压缩或加密超出了范围,您需要自行处理。
在创建包时,该 crate 在将文件添加到包时会 复制文件。在创建您的包时,请确保您有足够的存储空间和写入权限。
RFC 限制和怪癖
- 仅支持 UTF-8。
- 不支持多个校验和,一次只能使用一个。
- RFC 在第 2.4 节中规定,
bag 创建和验证工具 MUST 支持 SHA-256 和 SHA-512 算法
。这个 crate 要求您自带校验和算法,所以我想这个 crate 从来不会遵守 RFC 吧? - 校验和编码仅支持 小写。
- 这个包是为UNIX系统编写的,因此完全没有考虑Windows文件路径。此外,文件名的大小写也没有考虑。如果您觉得这是问题,请随意改进。
待办事项
-
fetch.txt
:我还没有用到这个,似乎实现它需要很多工作 - 同时支持多种校验和算法
- 尊重有关文件名大小写的规范
我并不期望这个包完全符合RFC或处理BagIt包的其他工具(尽管我不反对,相反)。
我将使用BagIt创建这个包,并使用这个包打开它。
致谢
如果您正在寻找BagIt的同步Rust实现,那么https://github.com/pwinckles/bagr是一个不错的选择!
依赖项
~3.5–5.5MB
~97K SLoC