librqbit_dualstack_sockets/
error.rs

1use std::net::SocketAddr;
2
3#[derive(thiserror::Error, Debug)]
4pub enum Error {
5    #[error("error creating socket: {0}")]
6    SocketNew(std::io::Error),
7    #[error("error binding to {addr}: {source}")]
8    Bind {
9        addr: SocketAddr,
10        source: std::io::Error,
11    },
12    #[error("error setting only_v6={value}: {source}")]
13    OnlyV6 { value: bool, source: std::io::Error },
14    #[error("error setting SO_REUSEADDR: {0}")]
15    ReuseAddress(std::io::Error),
16    #[error("error getting local_addr(): {0}")]
17    LocalAddr(std::io::Error),
18    #[error("as_socket() returned None")]
19    AsSocket,
20    #[error("error setting nonblocking=true: {0}")]
21    SetNonblocking(std::io::Error),
22    #[error("mismatch between local_addr({local_addr:?}) and requested bind_addr({bind_addr:?})")]
23    LocalBindAddrMismatch {
24        bind_addr: SocketAddr,
25        local_addr: SocketAddr,
26    },
27    #[error("error listening")]
28    Listen(std::io::Error),
29    #[error("error calling tokio from_std")]
30    TokioFromStd(std::io::Error),
31}
32
33pub type Result<T> = core::result::Result<T, Error>;