2 个版本
新版本 0.8.13 | 2024 年 8 月 18 日 |
---|
#463 in 文件系统
59KB
1.5K SLoC
Arkive
这是支撑 Dirtabase 的底层库。最终家族树将看起来像这样
Arkive SBox360 (sandbox build tool)
\ /
Dirtabase
|
Layover
|
Layover Linux
提供不可变目录(Arkive)、不可变且可重复的软件构建(Dirtabase)、原子/纯包管理(Layover)和统一的操作系统。
Arkive 存在的意义是
- 一个高性能的数据结构,用于在内存中表示目录树,
- 并为这个数据结构提供一系列特性,使其变得实用。
因为它可以将任何 Rust 类型作为按文件内容关联,所以它非常灵活,允许您在低功耗硬件上进行极快的目录操作。使用 arkive::Ark
直接可以做的事情几乎没有任何限制。然而,另一方面,与像 Dirtabase 这样的包装库相比,Arkive 中暴露了一些尖锐的边缘和复杂性,这些在包装库中是没有暴露的。
Arkive 并不容易使用,但它在多个方面以非典型的方式表示目录树,有时需要一些时间来理解。基本使用非常简单!
use arkive::*;
// Gets you an Ark<std::path::PathBuf>, where each file is represented by a
// PathBuf pointing to where it lives on disk.
let scanned = Ark::scan("./src").expect("Failed to read directory structure");
// Expands an archive to disk, like `tar x`.
//
// In this case, since the content type is PathBuf, the underlying per-file
// write behavior is std::fs::copy() from the original file to the new destination.
scanned.write("./copy_of_src").expect("Failed to copy files");
// Or that whole example, concisely with ?:
Ark::scan("./src")?.write("./copy_of_src")?;
许可证
Arkive 是一个 GPL-3 代码库。
依赖项
~5–16MB
~213K SLoC