14 个版本
0.2.10 | 2024 年 7 月 1 日 |
---|---|
0.2.8 | 2024 年 6 月 28 日 |
0.2.6 | 2022 年 4 月 4 日 |
0.2.5 | 2022 年 3 月 7 日 |
0.0.1 | 2021 年 11 月 20 日 |
#158 在 文件系统
每月 70 次下载
在 rivia-vfs 中使用
675KB
9K SLoC
rivia
Rust 工具库,用于减少代码冗余
rivia 提供了低级功能,以简化系统级交互。目的是减少样板代码的需要,并提供一个简化的 API,以便高级应用程序使用。因此,该包被分成按逻辑分类的顶层模块。 rivia 是基于 fungus 重新编写的,重点是减少依赖项或将其移动到可选的独立包中。
免责声明
rivia 绝不提供任何保证或支持。应自行承担风险。由于使用 rivia 而造成的任何损害、问题、损失或问题,严格由用户负责,而不是 rivia 的开发者/创建者。
按类别显示功能
- 用户管理 - XDG 支持,用户 ID 管理
- 文件系统 - 路径扩展,虚拟文件系统
快速链接
用法
使用 Vfs 读取活动应用程序配置的示例
use rivia::prelude::*;
fn main() {
// Simply replace this line with `let vfs = Vfs::stdfs();` for the real filesystem
let vfs = Vfs::memfs();
let config = load_config(vfs);
assert_eq!(config, "this is a test");
println!("VFS test passed");
}
// Load an example application configuration file using VFS.
// This allows you to test with a memory backed VFS implementation during testing and with
// the real filesystem during production.
fn load_config(vfs: Vfs) -> String {
let dir = PathBuf::from("/etc/xdg");
vfs.mkdir_p(&dir).unwrap();
let filepath = dir.mash("rivia.toml");
vfs.write_all(&filepath, "this is a test").unwrap();
assert_eq!(vfs.config_dir("rivia.toml").unwrap().to_str().unwrap(), "/etc/xdg");
if let Some(config_dir) = vfs.config_dir("rivia.toml") {
let path = config_dir.mash("rivia.toml");
return vfs.read_all(&path).unwrap();
}
"".into()
}
Rustc 要求
此最低 rustc 要求是由对 Rust 的 Error 处理改进所做的改进所驱动的。
贡献
欢迎提出拉取请求。然而,请理解,它们将仅根据它们是否与我的项目目标/理想相符合来评估。
项目指南:
- 链式调用 - 确保 Rust 的链式调用风格不会被新增功能所阻碍
- 简洁性 - 尽可能简洁地命名,同时不损害清晰度
- 清晰度 - 尽可能无歧义地命名,同时不损害简洁性
- 性能 - 保持便利函数的性能,同时指出显著的成本
- 速度 - 提供类似快速开发语言的便捷函数
- 舒适度 - 使用类似流行语言的命名和概念
开发环境
自动版本
启用 git 钩以在提交时自动增加版本号
cd ~/Projects/rivia
git config core.hooksPath .githooks
测试
托管依赖
由于《rivia》提供的某些功能属于低级性质,因此测试需要在运行测试的主机系统中安装一些依赖。
sudo
touch
在容器中测试
使用examples/cli.rs
中的代码构建测试容器
构建容器:
$ docker build -f Dockerfile.test -t rivia-test .
运行容器:
$ docker run --rm rivia-test:latest
在容器中调试:
$ docker run --rm -it rivia-test:latest bash
许可
本项目许可协议为以下之一
- MIT许可协议 LICENSE-MIT 或 http://opensource.org/licenses/MIT
- Apache License, Version 2.0 LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0
贡献
除非您明确声明,否则您有意提交到本项目的任何贡献,将按照上述协议双许可,不附加任何额外条款或条件。
待办事项
变更日志
- VFS Memfs
- VFS Stdfs
依赖项
~2MB
~44K SLoC