move speculative
This commit is contained in:
parent
953e4a302a
commit
73c4458f23
@ -1,4 +1,5 @@
|
||||
//! Data structures and algorithms, independent of [`crate::rcore`] concepts.
|
||||
|
||||
pub mod binary;
|
||||
pub mod speculative;
|
||||
pub mod traversible;
|
||||
|
@ -1,11 +1,11 @@
|
||||
use super::*;
|
||||
use crate::func::*;
|
||||
|
||||
type Frwa<'a, A, E0, E1, Fallible> =
|
||||
Wrap<'a, Result<WrapE<'a, A, E0, Fallible>, E1>, <Fallible as MonadFailAny<'a>>::T>;
|
||||
|
||||
type Wwa<'a, A, E0, E1, Fallible> = WrapE<'a, WrapE<'a, A, E0, Fallible>, E1, Fallible>;
|
||||
|
||||
pub trait SpeculativeFail<'a>: MonadFailAny<'a> {
|
||||
trait SpeculativeFailImpl<'a>: MonadFailAny<'a> {
|
||||
fn _speculative_a_wb<A: 'a, B: 'a, E0: 'a, E1: 'a>(
|
||||
a: A,
|
||||
wb: WrapE<'a, B, E0, Self>,
|
||||
@ -81,7 +81,7 @@ pub trait SpeculativeFail<'a>: MonadFailAny<'a> {
|
||||
)
|
||||
}
|
||||
|
||||
fn speculative<A: 'a, B: 'a, E0: 'a, E1: 'a>(
|
||||
fn _speculative<A: 'a, B: 'a, E0: 'a, E1: 'a>(
|
||||
wwa: Wwa<'a, A, E0, E1, Self>,
|
||||
wwb: Wwa<'a, B, E0, E1, Self>,
|
||||
) -> WrapE<'a, (A, B), Result<E0, E1>, Self> {
|
||||
@ -101,4 +101,14 @@ pub trait SpeculativeFail<'a>: MonadFailAny<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
pub trait SpeculativeFail<'a>: MonadFailAny<'a> {
|
||||
fn speculative<A: 'a, B: 'a, E0: 'a, E1: 'a>(
|
||||
wwa: Wwa<'a, A, E0, E1, Self>,
|
||||
wwb: Wwa<'a, B, E0, E1, Self>,
|
||||
) -> WrapE<'a, (A, B), Result<E0, E1>, Self> {
|
||||
Self::_speculative(wwa, wwb)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Fallible: ?Sized + MonadFailAny<'a>> SpeculativeFailImpl<'a> for Fallible {}
|
||||
impl<'a, Fallible: ?Sized + MonadFailAny<'a>> SpeculativeFail<'a> for Fallible {}
|
@ -13,7 +13,6 @@ mod controlflow;
|
||||
pub mod copy_func;
|
||||
pub mod derivations;
|
||||
pub mod instances;
|
||||
mod speculative;
|
||||
#[cfg(test)]
|
||||
pub mod test_suite;
|
||||
#[cfg(test)]
|
||||
@ -257,13 +256,6 @@ pub trait MonadFailAnyExt<'a>: MonadFailAny<'a> {
|
||||
fn fail<E: 'a, A: 'a>(e: E) -> WrapE<'a, A, E, Self> {
|
||||
<Self::W<E> as Fail<E>>::fail(e)
|
||||
}
|
||||
|
||||
fn speculative<A: 'a, B: 'a, E0: 'a, E1: 'a>(
|
||||
wwa: WrapE<'a, WrapE<'a, A, E0, Self>, E1, Self>,
|
||||
wwb: WrapE<'a, WrapE<'a, B, E0, Self>, E1, Self>,
|
||||
) -> WrapE<'a, (A, B), Result<E0, E1>, Self> {
|
||||
<Self as speculative::SpeculativeFail>::speculative(wwa, wwb)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a, Fallible: ?Sized + MonadFailAny<'a>> MonadFailAnyExt<'a> for Fallible {}
|
||||
|
Loading…
Reference in New Issue
Block a user