pub trait Connects { fn connect_to_network( &self, iface: &NetworkInterface, net: &Network, psk: Option<&str>, ) -> Result; } pub trait ListsNetworks { fn list_networks(&self, iface: &NetworkInterface) -> Result, String>; } pub trait ListsNetworkInterfaces { fn list_network_interfaces(&self) -> Result, String>; } pub trait Connector: Connects + ListsNetworks + ListsNetworkInterfaces {} #[derive(Debug, Default)] pub struct Network { pub ssid: String, pub bssid: Option, pub channel: Option, pub rssi: Option, } #[derive(Debug, Default)] pub struct NetworkInterface { pub enabled: bool, pub machine_name: String, pub human_name: Option, }