proc_getter 0.0.3

make retriving infomations from /proc/* easier
Documentation
use crate::{Error, Result};
use std::str::FromStr;

#[derive(Debug)]
pub struct DevMcast {
    index: usize,
    name: String,
    dmi_user: usize,
    dmi_gusers: usize,
    dmi_addr: usize,
}

impl FromStr for DevMcast {
    type Err = Error;

    fn from_str(s: &str) -> Result<DevMcast> {
        let columns: Vec<&str> = s.split_ascii_whitespace().collect();
        if columns.len() != 5 {
            return Err(Error::BadFormat);
        }

        let index = columns[0].parse::<usize>()?;
        let name = columns[1].to_string();
        let dmi_user = columns[2].parse::<usize>()?;
        let dmi_gusers = columns[3].parse::<usize>()?;
        let dmi_addr = usize::from_str_radix(columns[4], 16)?;

        Ok(DevMcast {
            index,
            name,
            dmi_user,
            dmi_gusers,
            dmi_addr,
        })
    }
}

#[inline(always)]
fn to_dev_mcast(line: &str) -> Result<DevMcast> {
    DevMcast::from_str(line)
}

default_list! {
    dev_mcast, "/proc/net/dev_mcast", DevMcast, to_dev_mcast
}