diff --git a/src/mode.rs b/src/mode.rs index 008db44..e2a2a41 100644 --- a/src/mode.rs +++ b/src/mode.rs @@ -191,3 +191,12 @@ pub trait ParseModeExt: ParseMode { } impl<F: ParseMode> ParseModeExt for F {} + +/// For auto-implementing [`FactoryParse`] and [`Atomic`]. +/// +/// [`FactoryParse`]: crate::rcore::FactoryParse +/// [`Atomic`]: crate::rstd::atomic::Atomic +pub trait ImplMode { + /// Same as [`ParseMode::Mode`] + type Mode: ?Sized + Mode; +} diff --git a/src/rcore.rs b/src/rcore.rs index 8201285..36fa114 100644 --- a/src/rcore.rs +++ b/src/rcore.rs @@ -35,7 +35,7 @@ pub use self::inctx::InCtx; pub use self::inlining::{Inlining, InliningExt, InliningResultExt}; pub use self::modes::{ CRegularFactory, ExtensionResultM, ExtensionSourceM, FactoryModeParse, FactoryModeProxy, - ImplMode, ModeResultM, RegularFactory, RegularMode, WithMode, WithParseMode, + ModeResultM, 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 6f0ad1f..ec00707 100644 --- a/src/rcore/modes.rs +++ b/src/rcore/modes.rs @@ -2,14 +2,6 @@ use std::marker::PhantomData; use super::*; -/// For auto-implementing [`FactoryParse`] and [`Atomic`]. -/// -/// [`Atomic`]: crate::rstd::atomic::Atomic -pub trait ImplMode { - /// Same as [`ParseMode::Mode`] - type Mode: ?Sized + Mode; -} - /// Used with [`WithMode`] for linking [`ImplMode`] to [`FactoryParse`] and [`Atomic`]. /// /// [`Atomic`]: crate::rstd::atomic::Atomic diff --git a/src/rstd/collections/tree.rs b/src/rstd/collections/tree.rs index 6137cb5..23a5a1b 100644 --- a/src/rstd/collections/tree.rs +++ b/src/rstd/collections/tree.rs @@ -4,6 +4,7 @@ use std::{error::Error, fmt::Display}; use crate::{ flow::binary::*, + mode::*, rcore::*, rstd::{atomic::au64::*, inlining::*, nullable::*, point::*}, }; diff --git a/src/rstd/nullable.rs b/src/rstd/nullable.rs index b073c58..3969a95 100644 --- a/src/rstd/nullable.rs +++ b/src/rstd/nullable.rs @@ -1,6 +1,7 @@ //! This module introduces [`Option`]-like concepts into RADN typesystem using [`Nullable`]. use crate::func::context::*; +use crate::mode::*; use crate::rcore::*; use super::{inlining::*, point::*, *}; diff --git a/src/rstd/point.rs b/src/rstd/point.rs index d8398b9..24ddb2f 100644 --- a/src/rstd/point.rs +++ b/src/rstd/point.rs @@ -2,6 +2,7 @@ use std::{error::Error, fmt::Display}; +use crate::mode::*; use crate::rcore::*; use crate::rstd::inlining::*; diff --git a/src/rstd/typeless.rs b/src/rstd/typeless.rs index 56dd692..e8a18ad 100644 --- a/src/rstd/typeless.rs +++ b/src/rstd/typeless.rs @@ -3,6 +3,7 @@ //! [`rcore`]: crate::rcore use super::{cast::CastError, wrapped_origin::*, *}; +use crate::mode::*; type TypelessSerialize<'a> = dyn 'a + Fn(&mut dyn Serializer);