protocols/gossipsub: Implement std::error::Error for error types (#2254)

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
This commit is contained in:
McFranko
2021-10-01 16:23:08 +00:00
committed by GitHub
parent c13f03354b
commit decfeadc0d
2 changed files with 42 additions and 0 deletions

View File

@ -14,6 +14,9 @@
- Allow `message_id_fn`s to accept closures that capture variables.
[PR 2103](https://github.com/libp2p/rust-libp2p/pull/2103)
- Implement std::error::Error for error types.
[PR 2254](https://github.com/libp2p/rust-libp2p/pull/2254)
# 0.32.0 [2021-07-12]
- Update dependencies.

View File

@ -40,6 +40,22 @@ pub enum PublishError {
TransformFailed(std::io::Error),
}
impl std::fmt::Display for PublishError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}
impl std::error::Error for PublishError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
Self::SigningError(err) => Some(err),
Self::TransformFailed(err) => Some(err),
_ => None,
}
}
}
/// Error associated with subscribing to a topic.
#[derive(Debug)]
pub enum SubscriptionError {
@ -49,6 +65,21 @@ pub enum SubscriptionError {
NotAllowed,
}
impl std::fmt::Display for SubscriptionError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}
impl std::error::Error for SubscriptionError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match self {
Self::PublishError(err) => Some(err),
_ => None,
}
}
}
impl From<SigningError> for PublishError {
fn from(error: SigningError) -> Self {
PublishError::SigningError(error)
@ -95,6 +126,14 @@ pub enum ValidationError {
TransformFailed,
}
impl std::fmt::Display for ValidationError {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}
impl std::error::Error for ValidationError {}
impl From<std::io::Error> for GossipsubHandlerError {
fn from(error: std::io::Error) -> GossipsubHandlerError {
GossipsubHandlerError::Io(error)