pub trait Output { type Value: Copy; //TODO: Should this be maybe async? fn output(&mut self, setting: Self::Value) -> Result<(), InvalidOutputSetting>; } /// Indicates the setting given for an [Output] is statically known to be an impossible setting to achieve. pub struct InvalidOutputSetting;