6 个版本
新 0.6.5 | 2024年8月17日 |
---|---|
0.6.4 | 2024年7月29日 |
0.6.1 | 2024年6月28日 |
#607 in 解析器实现
467 每月下载量
用于 3 个 crate 中 (通过 paketkoll_core)
145KB
1K SLoC
mtree2
这是 mtree-rs 的一个分支,修复了一些问题并提高了性能。不幸的是,上游已经停止更新,除了一个评论之外,因此需要进行分支。
以下为原始 README 的内容
一个用于遍历 mtree 条目的库。
mtree 是一种用于描述文件序列的数据格式。它们的存储位置是记录,以及可选的额外值,如校验和、大小、权限等。
有关规范的详细信息,请参阅 mtree(5)。
示例
use mtree2::MTree;
use std::time::SystemTime;
// We're going to load data from a string so this example with pass doctest,
// but there's no reason you can't use a file, or any other data source.
let raw_data = "
/set type=file uid=0 gid=0 mode=644
./.BUILDINFO time=1523250074.300237174 size=8602 md5digest=13c0a46c2fb9f18a1a237d4904b6916e \
sha256digest=db1941d00645bfaab04dd3898ee8b8484874f4880bf03f717adf43a9f30d9b8c
./.PKGINFO time=1523250074.276237110 size=682 md5digest=fdb9ac9040f2e78f3561f27e5b31c815 \
sha256digest=5d41b48b74d490b7912bdcef6cf7344322c52024c0a06975b64c3ca0b4c452d1
/set mode=755
./usr time=1523250049.905171912 type=dir
./usr/bin time=1523250065.373213293 type=dir
";
let entries = MTree::from_reader(raw_data.as_bytes());
for entry in entries {
// Normally you'd want to handle any errors
let entry = entry.unwrap();
// We can print out a human-readable copy of the entry
println!("{}", entry);
// Let's check that if there is a modification time, it's in the past
if let Some(time) = entry.time() {
assert!(time < SystemTime::now());
}
// We might also want to take a checksum of the file, and compare it to the digests
// supplied by mtree, but this example doesn't have access to a filesystem.
}
依赖项
~0.4–0.8MB
~17K SLoC