nostr_android_signer/
error.rs

1//! Android signer error
2
3use std::{fmt, io};
4
5use nostr::{event, key};
6use tonic::Status;
7
8/// Android signer error.
9#[derive(Debug)]
10pub enum Error {
11    /// I/O error
12    IO(io::Error),
13    /// Tonic transport error
14    Transport(tonic::transport::Error),
15    /// Tonic status
16    Status(Status),
17    /// Keys error
18    Keys(key::Error),
19    /// Event error
20    Event(event::Error),
21    /// Timeout
22    Timeout,
23}
24
25impl std::error::Error for Error {}
26
27impl fmt::Display for Error {
28    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
29        match self {
30            Self::IO(e) => e.fmt(f),
31            Self::Transport(e) => e.fmt(f),
32            Self::Status(status) => f.write_str(status.message()),
33            Self::Keys(e) => e.fmt(f),
34            Self::Event(e) => e.fmt(f),
35            Self::Timeout => f.write_str("Timeout"),
36        }
37    }
38}
39
40impl From<io::Error> for Error {
41    fn from(e: io::Error) -> Self {
42        Self::IO(e)
43    }
44}
45
46impl From<tonic::transport::Error> for Error {
47    fn from(e: tonic::transport::Error) -> Self {
48        Self::Transport(e)
49    }
50}
51
52impl From<Status> for Error {
53    fn from(s: Status) -> Self {
54        Self::Status(s)
55    }
56}
57
58impl From<key::Error> for Error {
59    fn from(e: key::Error) -> Self {
60        Self::Keys(e)
61    }
62}
63
64impl From<event::Error> for Error {
65    fn from(e: event::Error) -> Self {
66        Self::Event(e)
67    }
68}