show_topology/
show_topology.rs1use 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 link_type = device1.device_to_device_link_type(device2)?;
23 row.push(link_type.cell());
24 }
25 rows.push(row);
26 }
27
28 let table = rows.table();
29 print_stdout(table).expect("couldn't print table");
30
31 Ok(())
32}