show_p2p/
show_p2p.rs

1use cli_table::{print_stdout, Cell, Style, Table};
2use test_smi_rs::list_devices;
3use test_smi_rs::SmiResult;
4
5fn main() -> SmiResult<()> {
6    let devices = list_devices()?;
7
8    let mut rows = Vec::with_capacity(devices.len() + 1);
9    let mut header = Vec::with_capacity(devices.len() + 1);
10    header.push("Device".cell().bold(true));
11
12    for device in devices.iter() {
13        let name = device.device_info()?.name();
14        header.push(name.cell().bold(true));
15    }
16    rows.push(header);
17
18    for device1 in devices.iter() {
19        let mut row = Vec::with_capacity(devices.len() + 1);
20        row.push(device1.device_info()?.name().cell());
21        for device2 in devices.iter() {
22            let p2p_accessibility = match device1.p2p_accessible(device2)? {
23                true => "Accessible".to_string(),
24                false => "Inaccessible".to_string(),
25            };
26            row.push(p2p_accessibility.cell());
27        }
28        rows.push(row);
29    }
30
31    let table = rows.table();
32    print_stdout(table).expect("couldn't print table");
33
34    Ok(())
35}