1use snafu::Backtrace;
4use snafu::Snafu;
5
6pub type Result<T> = std::result::Result<T, Error>;
7
8#[derive(Snafu, Debug)]
9#[snafu(visibility(pub))]
10pub enum Error {
11 #[snafu(display("Invalid transport URL '{}'", url))]
13 InvalidUrl {
14 url: String,
15 source: url::ParseError,
16 backtrace: Backtrace,
17 },
18
19 #[snafu(display("Unknown transport scheme '{}'", scheme))]
21 UnknownScheme {
22 scheme: String,
23 backtrace: Backtrace,
24 },
25
26 #[snafu(display("Malformed '{}' URL '{}': {}", scheme, url, reason))]
29 MalformedUrl {
30 scheme: String,
31 url: String,
32 reason: &'static str,
33 backtrace: Backtrace,
34 },
35
36 #[snafu(display("Transport closed by peer"))]
38 Closed { backtrace: Backtrace },
39
40 #[snafu(display("Transport I/O error: {}", source))]
44 Io {
45 source: std::io::Error,
46 backtrace: Backtrace,
47 },
48
49 #[snafu(display("Buffer too small: needed {} bytes", needed))]
53 BufferTooSmall { needed: usize, backtrace: Backtrace },
54
55 #[snafu(display("Message dropped by mock transport"))]
57 MockDrop { backtrace: Backtrace },
58
59 #[snafu(display("Operation '{}' not supported by '{}'", op, scheme))]
62 Unsupported {
63 op: &'static str,
64 scheme: String,
65 backtrace: Backtrace,
66 },
67}