Skip to content

Commit 460396e

Browse files
committed
Add trait with method that won't collide between Provider and Error
1 parent 293b127 commit 460396e

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/lib.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,12 @@
208208
clippy::return_self_not_must_use,
209209
clippy::wildcard_imports,
210210
)]
211+
#![cfg_attr(provide_any, feature(provide_any))]
211212

212213
mod aserror;
213214
mod display;
215+
#[cfg(provide_any)]
216+
mod provide;
214217

215218
pub use thiserror_impl::*;
216219

@@ -219,4 +222,6 @@ pub use thiserror_impl::*;
219222
pub mod __private {
220223
pub use crate::aserror::AsDynError;
221224
pub use crate::display::{DisplayAsDisplay, PathAsDisplay};
225+
#[cfg(provide_any)]
226+
pub use crate::provide::ThiserrorProvide;
222227
}

src/provide.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
use std::any::{Demand, Provider};
2+
3+
pub trait ThiserrorProvide: Sealed {
4+
fn thiserror_provide<'a>(&'a self, demand: &mut Demand<'a>);
5+
}
6+
7+
impl<T: Provider + ?Sized> ThiserrorProvide for T {
8+
#[inline]
9+
fn thiserror_provide<'a>(&'a self, demand: &mut Demand<'a>) {
10+
self.provide(demand);
11+
}
12+
}
13+
14+
pub trait Sealed {}
15+
impl<T: Provider + ?Sized> Sealed for T {}

0 commit comments

Comments
 (0)