Merge pull request #192 from TheBlueMatt/2018-09-docs-docs-docs
[rust-lightning] / src / util / errors.rs
1 //! Error types live here.
2
3 use std::fmt;
4
5 /// Indicates an error on the client's part (usually some variant of attempting to use too-low or
6 /// too-high values)
7 pub enum APIError {
8         /// Indicates the API was wholly misused (see err for more). Cases where these can be returned
9         /// are documented, but generally indicates some precondition of a function was violated.
10         APIMisuseError {
11                 /// A human-readable error message
12                 err: &'static str
13         },
14         /// Due to a high feerate, we were unable to complete the request.
15         /// For example, this may be returned if the feerate implies we cannot open a channel at the
16         /// requested value, but opening a larger channel would succeed.
17         FeeRateTooHigh {
18                 /// A human-readable error message
19                 err: String,
20                 /// The feerate which was too high.
21                 feerate: u64
22         },
23
24         /// Invalid route or parameters (cltv_delta, fee, pubkey) was specified
25         RouteError {
26                 /// A human-readable error message
27                 err: &'static str
28         },
29 }
30
31 impl fmt::Debug for APIError {
32         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
33                 match *self {
34                         APIError::APIMisuseError {ref err} => f.write_str(err),
35                         APIError::FeeRateTooHigh {ref err, ref feerate} => write!(f, "{} feerate: {}", err, feerate),
36                         APIError::RouteError {ref err} => f.write_str(err),
37                 }
38         }
39 }