diff --git a/src/mode.rs b/src/mode.rs index f343173..de00386 100644 --- a/src/mode.rs +++ b/src/mode.rs @@ -103,3 +103,21 @@ pub trait Mode { ab2t: impl FnOnce(A, B) -> Result, ) -> Self::ExtensionResult; } + +/// Type that a [`Mode`] associated with it. +pub trait ParseMode { + /// Associated [`Mode`]. + type Mode: ?Sized + Mode; +} + +/// [`ParseMode`] equivalent of [`ParseSuccess`]. +pub type ParseSuccessP = ParseSuccess<::Mode, A, I>; + +/// [`ParseMode`] equivalent of [`ExtensionResult`]. +pub type ExtensionResultP = ExtensionResult<::Mode, A, E>; + +/// [`ParseMode`] equivalent of [`ExtensionSource`]. +pub type ExtensionSourceP = ExtensionSource<::Mode, A>; + +/// [`ParseMode`] equivalent of [`ModeResult`]. +pub type ModeResultP = ModeResult<::Mode, A, E, I>; diff --git a/src/rcore.rs b/src/rcore.rs index be3875b..0f84819 100644 --- a/src/rcore.rs +++ b/src/rcore.rs @@ -23,6 +23,7 @@ use std::{error::Error, rc::Rc}; use crate::func::context::*; use crate::func::*; +use crate::mode::*; use self::addresses::{Addresses, InliningAddresses}; pub use self::context::Context; @@ -33,9 +34,8 @@ 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::{ - CRegularFactory, ExtensionResultM, ExtensionResultP, ExtensionSourceM, ExtensionSourceP, - FactoryModeParse, FactoryModeProxy, ImplMode, ModeResultM, ModeResultP, ParseMode, - ParseModeExt, ParseSuccessP, RegularFactory, RegularMode, WithMode, WithParseMode, + CRegularFactory, ExtensionResultM, ExtensionSourceM, FactoryModeParse, FactoryModeProxy, + ImplMode, ModeResultM, ParseModeExt, RegularFactory, RegularMode, WithMode, WithParseMode, }; pub use self::origin::{OFctr, Origin}; pub use self::point::Point; diff --git a/src/rcore/modes.rs b/src/rcore/modes.rs index 90560f6..8af6f44 100644 --- a/src/rcore/modes.rs +++ b/src/rcore/modes.rs @@ -1,27 +1,7 @@ use std::marker::PhantomData; -use crate::mode::*; - use super::*; -/// Type that a [`Mode`] associated with it. -pub trait ParseMode { - /// Associated [`Mode`]. - type Mode: ?Sized + Mode; -} - -/// [`ParseMode`] equivalent of [`ParseSuccess`]. -pub type ParseSuccessP = ParseSuccess<::Mode, A, I>; - -/// [`ParseMode`] equivalent of [`ExtensionResult`]. -pub type ExtensionResultP = ExtensionResult<::Mode, A, E>; - -/// [`ParseMode`] equivalent of [`ExtensionSource`]. -pub type ExtensionSourceP = ExtensionSource<::Mode, A>; - -/// [`ParseMode`] equivalent of [`ParseResult`]. -pub type ModeResultP = ModeResult<::Mode, A, E, I>; - /// Extension trait for all [`ParseMode`] types, re-exporting [`Mode`] traits. pub trait ParseModeExt: ParseMode { /// [`Mode::bind`]. diff --git a/src/rstd/atomic.rs b/src/rstd/atomic.rs index b4ae07c..e74b1f7 100644 --- a/src/rstd/atomic.rs +++ b/src/rstd/atomic.rs @@ -10,6 +10,7 @@ pub mod plain; use std::marker::PhantomData; +use crate::mode::*; use crate::rcore::*; use super::*; diff --git a/src/rstd/atomic/modes.rs b/src/rstd/atomic/modes.rs index 1ed8066..afdd7ac 100644 --- a/src/rstd/atomic/modes.rs +++ b/src/rstd/atomic/modes.rs @@ -1,6 +1,3 @@ -#[cfg(doc)] -use crate::mode::*; - use super::*; impl Atomic for A { diff --git a/src/rstd/collections/pair.rs b/src/rstd/collections/pair.rs index ff4bfdd..986dbf9 100644 --- a/src/rstd/collections/pair.rs +++ b/src/rstd/collections/pair.rs @@ -3,6 +3,7 @@ use std::error::Error; use std::fmt::Display; +use crate::mode::*; use crate::rcore::*; use crate::rstd::inlining::{static_pair::*, *}; diff --git a/src/rstd/collections/stack.rs b/src/rstd/collections/stack.rs index f718c04..eb8e9be 100644 --- a/src/rstd/collections/stack.rs +++ b/src/rstd/collections/stack.rs @@ -1,6 +1,7 @@ //! Basic implementation of a stack/linked list. use crate::func::{context::*, controlflow::ControlFlow}; +use crate::mode::*; use crate::rcore::*; use crate::rstd::{inlining::*, nullable::*, point::*, *}; diff --git a/src/rstd/inlining.rs b/src/rstd/inlining.rs index ae9d05b..3dcef27 100644 --- a/src/rstd/inlining.rs +++ b/src/rstd/inlining.rs @@ -3,6 +3,7 @@ mod modes; pub mod static_pair; +use crate::mode::*; use crate::rcore::*; use super::{