#block-devices #devices #block #linux #json-parser #lsblk

blockdev

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

2 releases

0.1.2 Feb 24, 2025
0.1.1 Feb 24, 2025

#990 in Parser implementations

Download history 281/week @ 2025-02-21 119/week @ 2025-02-28

400 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
~33K SLoC