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文件系统

Download history 1/week @ 2024-06-06 1/week @ 2024-06-13 449/week @ 2024-06-27 65/week @ 2024-07-04 62/week @ 2024-07-25 8/week @ 2024-08-01

每月 70 次下载
rivia-vfs 中使用

MIT/Apache

675KB
9K SLoC

rivia

license-badge build codecov crates.io Minimum rustc

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

许可

本项目许可协议为以下之一

贡献

除非您明确声明,否则您有意提交到本项目的任何贡献,将按照上述协议双许可,不附加任何额外条款或条件。


待办事项

变更日志

  • VFS Memfs
  • VFS Stdfs

依赖项

~2MB
~44K SLoC