use super::*;
pub trait FnResultOnce<T: Tuple>: FnOnce<T, Output = Result<Self::Ok, Self::Err>> {
type Ok;
type Err;
}
impl<T: Tuple, F: FnOnce<T, Output = Result<Ok, Err>>, Ok, Err> FnResultOnce<T> for F {
type Ok = Ok;
type Err = Err;
}
pub trait FnResultMut<T: Tuple>: FnMut<T> + FnResultOnce<T> {}
impl<T: Tuple, F: FnMut<T> + FnResultOnce<T>> FnResultMut<T> for F {}
pub trait FnResult<T: Tuple>: Fn<T> + FnResultMut<T> {}
impl<T: Tuple, F: Fn<T> + FnResultMut<T>> FnResult<T> for F {}