#fat #file-io #read-write #fatfs #driver #targeted #mainly

无 std simple-fatfs

一个简单易用的 Rust FAT 文件系统库(主要针对嵌入式系统)

1 个不稳定版本

0.1.0-alpha.12024 年 8 月 4 日

#602文件系统

Download history 96/week @ 2024-08-01 10/week @ 2024-08-08

106 每月下载量

MIT 许可证

82KB
2K SLoC

simple-fatfs

CI Status GitHub License Crates.io Version docs.rs Crates.io MSRV

一个简单易用的文件分配表 (FAT) 文件系统驱动程序

动机

除了 rafalh 的 rust-fatfs 库之外,实际上在 crates.io 中没有其他 FAT 文件系统驱动程序。所有其他库要么只支持 FAT16/32,要么不再积极开发,或者是某些 C 库的绑定。

我发现 rafalh 的 rust-fatfs (这最终导致我创建了这个项目)的另一件有些令人沮丧的事情是,他的库不适合嵌入式 Rust,因为它需要实现 一些奇怪的缓冲 Read/Write,而且值得一提的是,crates.io 版本的他的库有些过时(在我写这个的时候,已有 144 额外的提交)。

意图

一个完全工作的 FAT 驱动程序,满足以下标准

  • 为开发者提供易于使用的公共 API
  • 避免不必要的/过大的依赖(我指的是 leftpad-like 依赖)
  • 支持 #[no_std]
  • 自动实现现有 std API(如 ReadWriteSeek 特性)
  • 支持 FAT12/16/32/ExFAT
  • 支持 VFAT/LFN(长文件名)

待办事项

  • FAT12 支持(仅处理 2 个扇区之间的条目)
  • 在路径中区分目录和文件(这也必须由文件系统验证,就像在 std 中一样)
  • 检查系统端序是否重要(FAT 是小端序)
  • 处理文件和目录名称中的不可打印字符
  • 支持 ExFAT
  • feature(error_in_core)发布到稳定版时,提升MSRV并使用core::error::Error特质而不是我们自定义的error::Error

致谢

本项目遵循Keep a ChangelogConventional Commits(自提交21c7d6b起,即不包括前两个实际上不包含任何代码的提交)。它还使用git-cliff将提交信息解析为CHANGELOG

许可证

MIT

依赖项

~1.1–1.8MB
~39K SLoC