From 1ed8751081107990b9d1b04b3397b4209442934d Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 22 May 2021 14:22:47 -0700 Subject: [PATCH] Support non-static AsDynError lifetimes --- src/aserror.rs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/aserror.rs b/src/aserror.rs index 8290296..f440034 100644 --- a/src/aserror.rs +++ b/src/aserror.rs @@ -1,33 +1,33 @@ use std::error::Error; -pub trait AsDynError { - fn as_dyn_error(&self) -> &(dyn Error + 'static); +pub trait AsDynError<'a> { + fn as_dyn_error(&self) -> &(dyn Error + 'a); } -impl AsDynError for T { +impl<'a, T: Error + 'a> AsDynError<'a> for T { #[inline] - fn as_dyn_error(&self) -> &(dyn Error + 'static) { + fn as_dyn_error(&self) -> &(dyn Error + 'a) { self } } -impl AsDynError for dyn Error + 'static { +impl<'a> AsDynError<'a> for dyn Error + 'a { #[inline] - fn as_dyn_error(&self) -> &(dyn Error + 'static) { + fn as_dyn_error(&self) -> &(dyn Error + 'a) { self } } -impl AsDynError for dyn Error + Send + 'static { +impl<'a> AsDynError<'a> for dyn Error + Send + 'a { #[inline] - fn as_dyn_error(&self) -> &(dyn Error + 'static) { + fn as_dyn_error(&self) -> &(dyn Error + 'a) { self } } -impl AsDynError for dyn Error + Send + Sync + 'static { +impl<'a> AsDynError<'a> for dyn Error + Send + Sync + 'a { #[inline] - fn as_dyn_error(&self) -> &(dyn Error + 'static) { + fn as_dyn_error(&self) -> &(dyn Error + 'a) { self } }