#mbr #no-std

no-std ape-mbr

简单的Crate,用于磁盘与其分区之间的接口

2个版本

0.1.1 2023年5月17日
0.1.0 2023年4月22日

1291 in 文件系统

26 每月下载量

MIT 协议

22KB
375

ApeMBR

MIT License Crates.io Documentation APE

简单的Crate,用于磁盘与其分区之间的接口

该Crate特别设计用于在磁盘和文件系统库之间提供接口,其中两者都可实现嵌入式_io。

简单明了,正如其应有的样子。

用法

可以通过在项目中的 Cargo.toml 依赖项中添加 ape-mbr 来使用此Crate。

[dependencies]
ape-mbr = "0.1.0"

示例

以下是如何与 ape-fatfs 配合使用 ape-mbr 的示例

use std::io::prelude::*;
use ape_fatfs::{
    fs::{
        FsOptions,
        FileSystem,
    },
    io::{
        StdIoWrapper
    }
};

use ape_mbr::{
    PartitionId,
    MBR,
};

fn main() {
    // Initialize the MBR
    let img_file = std::fs::OpenOptions::new().read(true).write(true)
        .open("test.img").unwrap();

    let img_file = StdIoWrapper::new(img_file);
   
    let mut mbr = MBR::new(img_file).unwrap();
    let mut p1 = mbr.get_partition(PartitionId::One).unwrap();
    
    let fs = FileSystem::new(p1, FsOptions::new()).unwrap();
    let root_dir = fs.root_dir();

    // Write a file
    root_dir.create_dir("foo").unwrap();
    let mut file = root_dir.create_file("foo/hello.txt").unwrap();
    file.truncate().unwrap();
    file.write_all(b"Hello World!").unwrap();

    // Read a directory
    let dir = root_dir.open_dir("foo").unwrap();
    for r in dir.iter() {
        let entry = r.unwrap();
        println!("{}", entry.file_name());
    }
}

依赖关系

~320–780KB
~18K SLoC