pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error("io error: {0}")]
IoError(#[from] std::io::Error),
#[error("utf-8 error: {0}")]
Utf8Error(#[from] std::str::Utf8Error),
#[error("cannot find ip address for domain: {0}")]
NoIpAddress(String),
#[error("cannot find free udp socket to bind")]
NoFreeSocket,
#[error("unknown error")]
Unknown,
}