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_raw();
settings.set_baud_rate(self)?;
Ok(())
}
}
pub struct KeepSettings;
impl IntoSettings for KeepSettings {
fn apply_to_settings(self, _settings: &mut Settings) -> std::io::Result<()> {
Ok(())
}
}