diff --git a/src/rcore/modes.rs b/src/rcore/modes.rs index 584d490..83a6598 100644 --- a/src/rcore/modes.rs +++ b/src/rcore/modes.rs @@ -125,6 +125,27 @@ pub trait ParseModeExt: ParseMode { ::seal(s) } + /// [`Mode::xmap_err`]. + fn xmap_err( + result: ::ExtensionResult, + f: impl FnOnce(E0) -> E1, + ) -> ::ExtensionResult { + ::xmap_err(result, f) + } + + /// [`Mode::xbind`]. + fn xbind( + result: ::ExtensionResult, + f: impl FnOnce(A0) -> Result, + ) -> ::ExtensionResult { + ::xbind(result, f) + } + + /// [`Mode::xseal`]. + fn xseal(result: ::ExtensionResult) -> Result { + ::xseal(result) + } + /// [`Mode::smap`]. fn smap( source: ::ExtensionSource, @@ -132,6 +153,23 @@ pub trait ParseModeExt: ParseMode { ) -> ::ExtensionSource { ::smap(source, f) } + + /// [`Mode::prepare`]. + fn prepare(a: A) -> ::ExtensionSource { + ::prepare(a) + } + + /// [`Mode::xsbind`]. + fn xsbind( + ab: ::ExtensionSource, + t2ab: impl FnOnce(AB) -> (A, B), + ce: impl FnOnce( + ::ExtensionSource, + ) -> ::ExtensionResult, + ab2t: impl FnOnce(A, B) -> Result, + ) -> ::ExtensionResult { + ::xsbind(ab, t2ab, ce, ab2t) + } } impl ParseModeExt for F {}