Tracking Issue for error_generic_member_access (original) (raw)
Feature gate: #![feature(error_generic_member_access)]
This is a tracking issue for the generic member access API on the error trait, which generalizes the pattern of fn source(&self) -> Option<&dyn Error> and fn backtrace(&self) -> Option<&Backtrace> into fn request_ref::<T>(&self) -> Option<&T>
Public API
// std::error
pub trait Error: Debug + Display { // existing API unchanged
fn provide<'a>(&'a self, req: &mut Request<'a>) {}}
pub struct Request<'a> { .. }
impl<'a> Request<'a> { pub fn provide_value(&mut self, value: T) -> &mut Request<'a> where T: 'static;
pub fn provide_value_with<T>(
&mut self,
fulfil: impl FnOnce() -> T,
) -> &mut Request<'a>
where
T: 'static;
pub fn provide_ref<T>(&mut self, value: &'a T) -> &mut Request<'a>
where
T: 'static + ?Sized;
pub fn provide_ref_with<T>(
&mut self,
fulfil: impl FnOnce() -> &'a T,
) -> &mut Request<'a>
where
T: 'static + ?Sized;
pub fn would_be_satisfied_by_value_of<T>(&self) -> bool
where
T: 'static;
pub fn would_be_satisfied_by_ref_of<T>(&self) -> bool
where
T: 'static + ?Sized;}
pub fn request_ref<'a, T: ?Sized + 'static>(err: &'a (impl Error + ?Sized)) -> Option<&'a T>;
pub fn request_value<T: 'static>(err: &(impl Error + ?Sized)) -> Option;
Steps / History
Now tracked by @waynr in #99301 (comment)
Unresolved Questions
- None yet.