20 个版本 (11 个破坏性更新)

0.12.0 2024年3月9日
0.10.0 2023年10月14日
0.9.0 2022年12月20日
0.8.0 2022年11月24日
0.1.2 2016年5月30日

#41 in 文件系统

Download history 17460/week @ 2024-04-23 13709/week @ 2024-04-30 16094/week @ 2024-05-07 14753/week @ 2024-05-14 13644/week @ 2024-05-21 14478/week @ 2024-05-28 14586/week @ 2024-06-04 13598/week @ 2024-06-11 13220/week @ 2024-06-18 15128/week @ 2024-06-25 10422/week @ 2024-07-02 11794/week @ 2024-07-09 10932/week @ 2024-07-16 10256/week @ 2024-07-23 8750/week @ 2024-07-30 10432/week @ 2024-08-06

42,682 每月下载次数
用于 27 个 Crates (23 个直接使用)

Apache-2.0

315KB
6.5K SLoC

rust-vfs

Crate API Minimum rustc version Actions Status

Rust 的虚拟文件系统

虚拟文件系统抽象化了一般文件系统,允许使用不同的文件系统实现(例如,用于单元测试的内存实现)

该包当前有以下实现:

  • PhysicalFS - 下层操作系统的实际文件系统
  • MemoryFS - 一个短暂的内存文件系统,主要用于单元测试
  • AltrootFS - 一个根目录位于另一个文件系统特定目录的文件系统
  • OverlayFS - 一个组合两个文件系统的覆盖文件系统,上层具有读写访问权限,下层只有读访问权限
  • EmbeddedFS - 集成在可执行文件中的只读文件系统,需要 embedded-fs 功能,没有异步版本

最低支持的 Rust 版本 (MSRV) 为 1.63。

欢迎评论和拉取请求!

变更日志

0.11.0 (2024-02-18)

  • 将最低支持的 Rust 版本更新到 1.63。
  • 更新 rust-embed 依赖项到 8.0 - 感谢 @NickAcPT
  • 解锁 tokio crate 版本以与新版本兼容 - 感谢 @Fredrik-Reinholdsen
  • 使用 Arc<str> 在内部路径中减少字符串分配 - 感谢 @BrettMayson

0.10.0 (2023-09-08)

  • 添加了 crate 的异步端口,在新的模块 async_vfs 中。该模块位于 async-vfs 功能标志之后,默认情况下未启用。向 @Fredrik Reinholdsen 表示巨大的感谢!
  • 将所有同步测试和文档测试转换为异步
  • 将最低支持的 Rust 版本更新到 1.61.0,以支持异步端口。
  • 将 Rust 版本从 2018 更新到 2021,以支持异步端口。
  • 更新 CI 流水线中使用的 Rust 版本。

0.9.0 (2022-12-20)

  • 在并行执行时防止 Path::create_dir_all() 失败(修复了 #47
  • 允许在 VfsPath::join() 中使用绝对路径(例如以"/"开头)(#45 - 感谢 @Property404)
  • 允许路径中存在多个连续的斜杠(#43 - 感谢 @Property404)
  • 添加方法 VfsPath::is_root()#44 - 感谢 @Property404
  • Path::join() 现在允许在根目录中解析 '..' (解析为根目录本身)(#41 - 感谢 @Property404
  • Send 添加到从 API 返回的特例对象中(#40#46 - 感谢 @Property404

0.8.0 (2022-11-24)

  • VfsError 实现 std::error::Error#32)并改进了最终用户的错误处理(#34) - 感谢 @Technohacker

0.7.1 (2022-04-15)

  • 修复了在 MemoryFS::append_file() 中访问不存在路径时的恐慌(关闭了 #31

0.7.0 (2022-03-26)

  • EmbeddedFS 更新到 rust-embed v6(关闭了 #29
  • 在包根目录下使 OverlayFSAltrootFS 可用,使其更一致(PR #30 - 感谢 @Zyian

0.6.2 (2022-03-07)

  • 在构建在 docs.rs 上时激活 embedded-fs 功能,以确保它确实出现在那里(#28 - 感谢 @Absolucy

0.6.1 (2022-03-06)

  • 添加了 VfsPath::root() 方法以访问虚拟文件系统的根路径(关闭了 #26
  • VfsPath 文档中添加了 doctests 以提供使用示例

0.6.0 (2022-03-02)

  • 修复了 EmbeddedFS 中的路径不一致问题(关闭了 #24
  • 添加了测试宏 test_vfs_readonly! 以验证只读文件系统实现
  • 移除了对 thiserror crate 的依赖,以改进编译时间(关闭了 #25

0.5.2 (2022-02-07)

  • 移除了 OverlayFS 中的潜在恐慌(关闭了 #23
  • VfsPath::join() 现在采用 AsRef 代替 &str,以改善与 camino 等crate的易用性

0.5.1 (2021-02-13)

  • 通过特性标志 export-test-macros 导出 test_vfs 宏,以便下游实现可以验证预期行为
  • 由于上游 crate 的需求,MSRV 现在是 1.40
  • 嵌入式实现因 0.5.0 API 变更而损坏,现已修复

0.5.0 (2021-02-13)

  • 添加了 EmbeddedFS 以使用通过 rust-embed 集成的文件系统(PR #12 - 感谢 @ahouts
  • VfsPath::exists() 改为返回 VfsResult<bool> 而不是原始的 bool(关闭 #17

0.4.0 (2020-08-13)

  • 添加了 OverlayFS 联合文件系统
  • 添加了 VfsPath::read_to_string() 便利方法
  • 添加了 VfsPath::walk_dir() 方法用于递归遍历目录
  • 添加了 VfsPath::{copy,move}_{file,dir}() 方法(关闭 #9
  • 许可证现在是 Apache 2.0
  • 最低支持的 Rust 版本 (MSRV) 是 1.32.0

0.3.0 (2020-08-04)

  • 重构以使用基于 trait 的设计,简化了使用和测试

0.2.1 (2020-02-06)

0.1.0 (2016-05-14)

  • 初始发布

路线图

  • 支持只读文件系统
  • 支持重新挂载文件系统
  • 支持在存档内访问虚拟文件系统(例如 zip)

依赖项

~0–12MB
~117K SLoC