async_tftp/
error.rs

1use thiserror::Error;
2
3/// Type alias to [`Result<T, Error>`](std::result::Result).
4pub type Result<T, E = Error> = std::result::Result<T, E>;
5
6/// Error type of this crate.
7#[derive(Debug, Error)]
8pub enum Error {
9    #[error("Invalid packet")]
10    InvalidPacket,
11
12    #[error("TFTP protocol error: {0:?}")]
13    Packet(crate::packet::Error),
14
15    #[error("IO error: {0}")]
16    Io(#[from] std::io::Error),
17
18    #[error("Failed to bind socket: {0}")]
19    Bind(#[source] std::io::Error),
20
21    #[error("Path '{}' is not a directory", .0.display())]
22    NotDir(std::path::PathBuf),
23
24    #[error("Max send retries reached (peer: {0},  block id: {1})")]
25    MaxSendRetriesReached(std::net::SocketAddr, u16),
26}
27
28impl From<nom::Err<nom::error::Error<&[u8]>>> for Error {
29    fn from(_error: nom::Err<nom::error::Error<&[u8]>>) -> Error {
30        Error::InvalidPacket
31    }
32}