use crate::Settings;
pub trait IntoSettings {
fn apply_to_settings(self, settings: &mut Settings) -> std::io::Result<()>;
}
impl<F> IntoSettings for F
where
F: FnOnce(Settings) -> std::io::Result<Settings>,
{
fn apply_to_settings(self, settings: &mut Settings) -> std::io::Result<()> {
*settings = (self)(settings.clone())?;
Ok(())
}
}
impl IntoSettings for u32 {
fn apply_to_settings(self, settings: &mut Settings) -> std::io::Result<()> {
settings.set_baud_rate(self)?;
settings.set_char_size(crate::CharSize::Bits8);
settings.set_stop_bits(crate::StopBits::One);
settings.set_parity(crate::Parity::None);
settings.set_flow_control(crate::FlowControl::None);
Ok(())
}
}
pub struct KeepSettings;
impl IntoSettings for KeepSettings {
fn apply_to_settings(self, _settings: &mut Settings) -> std::io::Result<()> {
Ok(())
}
}