use std::io;
use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum Error {
#[error("serial I/O error: {0}")]
Io(#[from] io::Error),
#[error("serial backend error: {0}")]
Backend(#[from] serialport::Error),
#[error("invalid serial configuration: {0}")]
InvalidConfig(String),
#[error("device {device} is locked by PID {pid} (lock file: {lock_file})")]
AlreadyLocked {
device: String,
pid: i32,
lock_file: std::path::PathBuf,
},
#[error("invalid UUCP lock file: {0}")]
InvalidLock(String),
}