#derive #directory #struct #read #macro #filestruct

macro filestruct_derive

Derive macro to read a directory into a Rust struct

2 unstable releases

0.3.0 Apr 25, 2023
0.2.0 Apr 23, 2023

#548 in #struct

43 downloads per month
Used in filestruct

MIT license

10KB
158 lines

filestruct | Tests

A Rust derive macro which permits reading struct values from a directory.

Not ready for production use, still in heavy development and many things are not yet implemented or will unexpectedly blow up.

Usage

use filestruct::FromDir;

#[derive(FromDir, Debug)]
struct Files {
    comm: String,
    #[filestruct(file = "comm", trim = true)]
    comm_trimmed: String,
    oom_score: u32,
    does_not_exist: Option<u32>,
    #[filestruct(file = "oom_score_adj")]
    does_not_exist_but_renamed: Option<u32>,
    #[filestruct(relative_dir = "..", trim = true)]
    uptime: String,
}

fn main() {
    let files = Files::from_dir("/proc/self");
    println!("{:#?}", files);
}

Results in:

Ok(
    Files {
        comm: "pdm-bin\n",
        comm_trimmed: "pdm-bin",
        oom_score: 800,
        does_not_exist: None,
        does_not_exist_but_renamed: Some(
            200,
        ),
        uptime: "177405.74 822813.82",
    },
)

Releases

Releases are a little complicated because filestruct_derive and filestruct are separate crates. Use cargo release:

cargo release --execute -- minor

Dependencies

~0.3–0.8MB
~19K SLoC