From 676824988e12d21878ede2d91b773354b6b0981c Mon Sep 17 00:00:00 2001 From: Thomas Lacroix Date: Tue, 12 Mar 2019 16:51:23 +0100 Subject: sync: impl `Error` for oneshot and watch error types (#967) Refs: #937 --- tokio-sync/src/watch.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'tokio-sync/src/watch.rs') diff --git a/tokio-sync/src/watch.rs b/tokio-sync/src/watch.rs index 4c2b2972..b3303bdc 100644 --- a/tokio-sync/src/watch.rs +++ b/tokio-sync/src/watch.rs @@ -104,6 +104,8 @@ pub struct Ref<'a, T: 'a> { pub mod error { //! Watch error types + use std::fmt; + /// Error produced when receiving a value fails. #[derive(Debug)] pub struct RecvError { @@ -115,6 +117,36 @@ pub mod error { pub struct SendError { pub(crate) inner: T, } + + // ===== impl RecvError ===== + + impl fmt::Display for RecvError { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + use std::error::Error; + write!(fmt, "{}", self.description()) + } + } + + impl ::std::error::Error for RecvError { + fn description(&self) -> &str { + "channel closed" + } + } + + // ===== impl SendError ===== + + impl fmt::Display for SendError { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + use std::error::Error; + write!(fmt, "{}", self.description()) + } + } + + impl ::std::error::Error for SendError { + fn description(&self) -> &str { + "channel closed" + } + } } #[derive(Debug)] -- cgit v1.2.3