5 个不稳定版本
0.4.2 | 2024年8月8日 |
---|---|
0.4.1 | 2024年7月31日 |
0.4.0 | 2024年7月30日 |
0.3.0 | 2024年7月3日 |
0.2.0 | 2024年6月27日 |
#140 in 文件系统
522 每月下载量
175KB
3K SLoC
ext4-view-rs
此仓库提供了一个 Rust crate,允许以只读方式访问 ext4 文件系统。写访问不是目标。此 crate 是 no_std
,因此可以在嵌入式环境中使用。但是,它需要 alloc
。
用法
添加依赖项
cargo add ext4-view
基本示例
use ext4_view::{Ext4, Metadata};
// Load the filesystem. The data source can be be anything that
// implements the `Ext4Read` trait. The simplest source is a
// `Vec<u8>` containing the whole filesystem.
let fs_data: Vec<u8> = get_fs_data_from_somewhere();
let fs = Ext4::load(Box::new(fs_data))?;
// If the `std` feature is enabled, you can load a filesystem by path:
let fs = Ext4::load_from_path(std::path::Path::new("some-fs.bin"))?;
// The `Ext4` type has methods very similar to `std::fs`:
let path = "/some/file/path";
let file_data: Vec<u8> = fs.read(path)?;
let file_str: String = fs.read_to_string(path)?;
let exists: bool = fs.exists(path)?;
let metadata: Metadata = fs.metadata(path)?;
for entry in fs.read_dir("/some/dir")? {
let entry = entry?;
println!("{}", entry.path().display());
}
设计目标
按重要性排序
- 正确
- 所有有效的 ext4 文件系统都应可读。
- 无效数据永远不会导致崩溃、恐慌或非终止循环。
- 主包中无
unsafe
代码(它在依赖项中是允许的)。 - 经过良好测试。
- 易于使用
- API 应尽可能遵循
std::fs
的约定。
- API 应尽可能遵循
- 良好的性能
- 性能不应以正确性或易用性为代价。
非目标
- 写支持。
- 损坏文件系统的恢复。
许可证
根据您的选择,许可协议为 Apache 许可证,版本 2.0 或 MIT 许可证。
贡献
请参阅 行为准则 和 contributing.md。
欢迎提交错误报告和 PR!
免责声明
本项目不是官方 Google 项目。Google 不支持此项目,并明确拒绝就其质量、适销性或特定用途适用性提供任何保证。
依赖项
~205KB