pub trait VirtualDevice: Debug + Sized
{
type V: DeviceDriverName;
const DriverName: Self::V;
#[inline(always)]
fn name(&self) -> VirtualDeviceName<Self::V>
{
VirtualDeviceName::new(Self::DriverName, self.index())
}
#[inline(always)]
fn index(&self) -> u5;
#[inline(always)]
fn asInitialisationArgument(&self) -> CString
{
CString::new(format!("{}{}", self.name().to_string(), self.formattedVirtualDeviceArgumentsWithLeadingComma())).unwrap()
}
#[inline(always)]
fn formattedVirtualDeviceArgumentsWithLeadingComma(&self) -> String;
#[inline(always)]
fn addToMap(self, map: &mut HashMap<u8, Self>) -> Option<Self>
{
map.insert(self.index(), self)
}
}