ape-mbr

Crates.ioape-mbr
lib.rsape-mbr
version0.1.1
sourcesrc
created_at2023-04-22 04:37:42.710335
updated_at2023-05-17 19:49:31.092714
descriptionsimple crate to interface between a disk and it's partitions
homepage
repositoryhttps://github.com/Gip-Gip/ape-mbr
max_upload_size
id845814
size22,563
Charles Thompson (Gip-Gip)

documentation

README

ApeMBR

MIT License Crates.io Documentation APE

simple crate to interface between a disk and it's partitions

This crate is especially designed to provide an interface between a disk and a file system library, where both are able to implement embedded_io.

Dead simple, as it should be.

Usage

This crate can be used by adding ape-mbr to the dependencies in your project's Cargo.toml.

[dependencies]
ape-mbr = "0.1.0"

Examples

Here's ape-mbr being coupled with ape-fatfs

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());
    }
}
Commit count: 8

cargo fmt