#block-device #linux #lsblk #devices

blockdev

A Rust library for parsing and working with lsblk JSON output, providing type-safe block device representation and utilities for Linux

2 releases

Uses new Rust 2024

0.1.2 Feb 24, 2025
0.1.1 Feb 24, 2025

#1058 in Parser implementations

42 downloads per month

MIT license

26KB
415 lines

blockdev

Crates.io Documentation License

blockdev is a lightweight Rust library for parsing and working with the output of the lsblk --json command on Linux. It leverages Serde for JSON deserialization, providing a type-safe representation of block devices and a set of utilities to inspect their properties.

Features

  • JSON Parsing: Easily parse the JSON output of lsblk --json into Rust data structures.
  • Flexible Mountpoint Support: Handles both single mountpoint values (which may be null) and arrays of mountpoints.
  • System Device Detection: Determine whether a block device (or any of its nested children) is a system device (i.e. has a mountpoint of /).
  • Filtering Utilities: Provides helper functions to filter out non-system devices.

Installation

Add blockdev to your Cargo.toml:

[dependencies]
blockdev = "0.1.0"

Then run:

cargo build

Usage

Get devices

use blockdev::get_devices;

fn example_devices() -> Result<BlockDevices, Box<dyn Error>> {
    let devices = get_devices();
    devices
}

Dependencies

~0.6–1.5MB
~32K SLoC