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 文件系统
42,682 每月下载次数
用于 27 个 Crates (23 个直接使用)
315KB
6.5K SLoC
rust-vfs
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)
0.6.2 (2022-03-07)
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)
- 添加了
AltrootFS
(感谢 @icefoxen)
0.1.0 (2016-05-14)
- 初始发布
路线图
- 支持只读文件系统
- 支持重新挂载文件系统
- 支持在存档内访问虚拟文件系统(例如 zip)
依赖项
~0–12MB
~117K SLoC