Crates.io | ape-mbr |
lib.rs | ape-mbr |
version | 0.1.1 |
source | src |
created_at | 2023-04-22 04:37:42.710335 |
updated_at | 2023-05-17 19:49:31.092714 |
description | simple crate to interface between a disk and it's partitions |
homepage | |
repository | https://github.com/Gip-Gip/ape-mbr |
max_upload_size | |
id | 845814 |
size | 22,563 |
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.
This crate can be used by adding ape-mbr
to the dependencies in your
project's Cargo.toml
.
[dependencies]
ape-mbr = "0.1.0"
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());
}
}