ParseMode types

This commit is contained in:
AF 2023-07-30 14:39:57 +00:00
parent 466a3f5239
commit 1c543f6379
2 changed files with 16 additions and 3 deletions

View File

@ -33,9 +33,10 @@ pub use self::hashing::{Hash, HASH_SIZE, HASH_ZEROS};
pub use self::inctx::InCtx;
pub use self::inlining::{Inlining, InliningExt, InliningResultExt};
pub use self::modes::{
ExtensionResult, ExtensionResultM, ExtensionSource, ExtensionSourceM, FactoryModeParse,
FactoryModeProxy, ImplMode, Mode, ModeResult, ParseMode, ParseModeExt, ParseResultM,
QRegularFactory, RegularFactory, RegularMode, WithMode, WithParseMode,
ExtensionResult, ExtensionResultM, ExtensionResultP, ExtensionSource, ExtensionSourceM,
ExtensionSourceP, FactoryModeParse, FactoryModeProxy, ImplMode, Mode, ModeResult, ModeResultP,
ParseMode, ParseModeExt, ParseResultM, ParseSuccess, ParseSuccessP, QRegularFactory,
RegularFactory, RegularMode, WithMode, WithParseMode,
};
pub use self::origin::{OFctr, Origin};
pub use self::point::Point;

View File

@ -111,6 +111,18 @@ pub trait ParseMode {
type Mode: ?Sized + Mode;
}
/// [`ParseMode`] equivalent of [`ParseSuccess`].
pub type ParseSuccessP<F, A, I> = ParseSuccess<<F as ParseMode>::Mode, A, I>;
/// [`ParseMode`] equivalent of [`ExtensionResult`].
pub type ExtensionResultP<F, A, E> = ExtensionResult<<F as ParseMode>::Mode, A, E>;
/// [`ParseMode`] equivalent of [`ExtensionSource`].
pub type ExtensionSourceP<F, A> = ExtensionSource<<F as ParseMode>::Mode, A>;
/// [`ParseMode`] equivalent of [`ParseResult`].
pub type ModeResultP<F, A, E, I> = ModeResult<<F as ParseMode>::Mode, A, E, I>;
/// Extension trait for all [`ParseMode`] types, re-exporting [`Mode`] traits.
pub trait ParseModeExt: ParseMode {
/// [`Mode::bind`].