| Crates.io | fudisks |
| lib.rs | fudisks |
| version | 0.1.0 |
| created_at | 2025-11-19 20:16:13.715491+00 |
| updated_at | 2025-11-19 20:16:13.715491+00 |
| description | High-level wrapper for the udisks2 crate |
| homepage | |
| repository | https://github.com/MoAlyousef/fudisks |
| max_upload_size | |
| id | 1940737 |
| size | 62,915 |
A high-level wrapper around the udisks2 crate. A work in progress!
cargo run --example list_devices
ALLOW_DESTRUCTIVE=1 cargo run --example format_partition -- <udisks_object_path>
use fudisks::{Udisks, FormatOptions, JobEvent};
use futures_util::StreamExt;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let ud = Udisks::connect_system().await?;
// Choose a partition object path from list_devices output
let part = "/org/freedesktop/UDisks2/block_devices/sdb1";
let opts = FormatOptions::Exfat { label: Some("USB".into()), cluster_size: None, quick: true };
let handle = ud.format_partition(part, &opts).await?;
let mut stream = handle.watch();
while let Some(evt) = stream.next().await {
match evt {
JobEvent::Percent(p) => println!("{p:.1}%"),
JobEvent::RateBytesPerSec(r) => println!("{r} B/s"),
JobEvent::Completed(res) => match res {
Ok(()) => break,
Err(e) => { eprintln!("error: {}", e); return Err(e.into()); }
}
}
}
Ok(())
}
Format a whole disk using GPT (default) or DOS/MBR (DANGEROUS):
ALLOW_DESTRUCTIVE=1 cargo run --example format_disk -- <disk_object_path> gpt
ALLOW_DESTRUCTIVE=1 cargo run --example format_disk -- <disk_object_path> dos