#[derive(Debug, Copy, Clone, PartialEq, Hash)]
pub enum HardwareType {
CPU,
GPU,
ACCELERATOR,
OTHER,
}
pub trait IHardware {
fn id(&self) -> isize;
fn name(&self) -> Option<String>;
fn set_name(&mut self, name: Option<String>) -> Self;
fn hardware_type(&self) -> Option<HardwareType>;
fn set_hardware_type(&mut self, hardware_type: Option<HardwareType>) -> Self;
fn compute_units(&self) -> Option<isize>;
fn set_compute_units(&mut self, compute_units: Option<isize>) -> Self;
fn build(self) -> Self;
}