Mode::x
methods
This commit is contained in:
parent
3bbcfadec7
commit
ecdefe53cd
@ -18,6 +18,16 @@ pub trait Mode {
|
|||||||
) -> Self::ParseResult<A1, E, I>;
|
) -> Self::ParseResult<A1, E, I>;
|
||||||
|
|
||||||
fn seal<A, E, I>(result: Self::ParseResult<A, E, I>) -> Result<A, E>;
|
fn seal<A, E, I>(result: Self::ParseResult<A, E, I>) -> Result<A, E>;
|
||||||
|
|
||||||
|
fn xmap_err<A, E0, E1>(
|
||||||
|
result: Self::ExtensionResult<A, E0>,
|
||||||
|
f: impl FnOnce(E0) -> E1,
|
||||||
|
) -> Self::ExtensionResult<A, E1>;
|
||||||
|
|
||||||
|
fn xbind<A0, A1, E>(
|
||||||
|
result: Self::ExtensionResult<A0, E>,
|
||||||
|
f: impl FnOnce(A0) -> Result<A1, E>,
|
||||||
|
) -> Self::ExtensionResult<A1, E>;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait ParseMode {
|
pub trait ParseMode {
|
||||||
@ -89,6 +99,20 @@ impl Mode for RegularMode {
|
|||||||
fn seal<A, E, I>(result: Self::ParseResult<A, E, I>) -> Result<A, E> {
|
fn seal<A, E, I>(result: Self::ParseResult<A, E, I>) -> Result<A, E> {
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn xmap_err<A, E0, E1>(
|
||||||
|
result: Self::ExtensionResult<A, E0>,
|
||||||
|
f: impl FnOnce(E0) -> E1,
|
||||||
|
) -> Self::ExtensionResult<A, E1> {
|
||||||
|
result.map_err(f)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn xbind<A0, A1, E>(
|
||||||
|
result: Self::ExtensionResult<A0, E>,
|
||||||
|
f: impl FnOnce(A0) -> Result<A1, E>,
|
||||||
|
) -> Self::ExtensionResult<A1, E> {
|
||||||
|
result.and_then(f)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait RegularFactory<'a, Ctx: Context<'a>>:
|
pub trait RegularFactory<'a, Ctx: Context<'a>>:
|
||||||
|
@ -26,6 +26,20 @@ impl Mode for InliningMode {
|
|||||||
fn seal<A, E, I>(result: Self::ParseResult<A, E, I>) -> Result<A, E> {
|
fn seal<A, E, I>(result: Self::ParseResult<A, E, I>) -> Result<A, E> {
|
||||||
result.map(|(a, _)| a)
|
result.map(|(a, _)| a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn xmap_err<A, E0, E1>(
|
||||||
|
result: Self::ExtensionResult<A, E0>,
|
||||||
|
f: impl FnOnce(E0) -> E1,
|
||||||
|
) -> Self::ExtensionResult<A, E1> {
|
||||||
|
f(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn xbind<A0, A1, E>(
|
||||||
|
result: Self::ExtensionResult<A0, E>,
|
||||||
|
_f: impl FnOnce(A0) -> Result<A1, E>,
|
||||||
|
) -> Self::ExtensionResult<A1, E> {
|
||||||
|
result
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, Ctx: Context<'a>, F: InlineableFactory<'a, Ctx>> FactoryProxy<'a, Ctx>
|
impl<'a, Ctx: Context<'a>, F: InlineableFactory<'a, Ctx>> FactoryProxy<'a, Ctx>
|
||||||
|
Loading…
Reference in New Issue
Block a user