summaryrefslogtreecommitdiff
path: root/vendor/tower/src/ready_cache/error.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/tower/src/ready_cache/error.rs')
-rw-r--r--vendor/tower/src/ready_cache/error.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/vendor/tower/src/ready_cache/error.rs b/vendor/tower/src/ready_cache/error.rs
new file mode 100644
index 00000000..08115f49
--- /dev/null
+++ b/vendor/tower/src/ready_cache/error.rs
@@ -0,0 +1,28 @@
+//! Errors
+
+/// An error indicating that the service with a `K`-typed key failed with an
+/// error.
+pub struct Failed<K>(pub K, pub crate::BoxError);
+
+// === Failed ===
+
+impl<K: std::fmt::Debug> std::fmt::Debug for Failed<K> {
+ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
+ f.debug_tuple("Failed")
+ .field(&self.0)
+ .field(&self.1)
+ .finish()
+ }
+}
+
+impl<K> std::fmt::Display for Failed<K> {
+ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
+ self.1.fmt(f)
+ }
+}
+
+impl<K: std::fmt::Debug> std::error::Error for Failed<K> {
+ fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
+ Some(&*self.1)
+ }
+}