pciutils 0.1.1

A clone of pciutils in Rust
Documentation
use pciutils::access::sysfs::Sysfs;
use pciutils::error::Result;
use pciutils::parser::Parser;

use pretty_hex::{config_hex, HexConfig};

fn main() -> Result<()> {
    env_logger::init();

    let parser = Parser::new();

    let mut functions = Sysfs::discover()?;

    if let Some(slots) = parser.slots() {
        functions.retain(|function| slots.clone().into_iter().any(|slot| *function == *slot))
    }

    if let Some(ids) = parser.ids() {
        functions.retain(|function| ids.clone().into_iter().any(|id| *function == *id))
    }

    let hex_config = HexConfig {
        title: false,
        width: 16,
        group: 0,
        ascii: false,
        ..HexConfig::default()
    };
    for f in functions {
        println!("{}", f.to_string(parser.verbosity())?);
        if parser.hexdump() > 0 {
            println!("{}", config_hex(&f.config()?, hex_config))
        }

        if parser.hexdump() > 0 || parser.verbosity() > 0 {
            println!();
        }
    }

    Ok(())
}