pub struct ArenaFactory<'input, TF, T> { /* private fields */ }
Expand description
This is a wrapper for Token factory that allows to allocate tokens in separate arena. It can allow to significantly improve performance by passing Tokens by references everywhere.
Requires &'a Tok: Default
bound to produce invalid tokens, which can be easily implemented
like this:
lazy_static!{ static ref INVALID_TOKEN:Box<CustomToken> = ... }
impl Default for &'_ CustomToken {
fn default() -> Self { &**INVALID_TOKEN }
}
or if possible just
const INVALID_TOKEN:CustomToken = ...
Trait Implementations§
Source§impl<'input, TF: Debug, T> Debug for ArenaFactory<'input, TF, T>
impl<'input, TF: Debug, T> Debug for ArenaFactory<'input, TF, T>
Source§impl<'input, TF, T> Default for ArenaFactory<'input, TF, T>where
TF: Default,
impl<'input, TF, T> Default for ArenaFactory<'input, TF, T>where
TF: Default,
Source§impl<'input, TF, Tok> TokenFactory<'input> for ArenaFactory<'input, TF, Tok>
impl<'input, TF, Tok> TokenFactory<'input> for ArenaFactory<'input, TF, Tok>
Source§type Tok = &'input Tok
type Tok = &'input Tok
Ownership of the emitted tokens
Source§type Data = <TF as TokenFactory<'input>>::Data
type Data = <TF as TokenFactory<'input>>::Data
Type of the underlying storage
Source§type From = <TF as TokenFactory<'input>>::From
type From = <TF as TokenFactory<'input>>::From
Type of the
CharStream
that factory can produce tokens fromSource§fn create<T>(
&'input self,
source: Option<&mut T>,
ttype: isize,
text: Option<<Self::Data as ToOwned>::Owned>,
channel: isize,
start: isize,
stop: isize,
line: isize,
column: isize,
) -> Self::Tok
fn create<T>( &'input self, source: Option<&mut T>, ttype: isize, text: Option<<Self::Data as ToOwned>::Owned>, channel: isize, start: isize, stop: isize, line: isize, column: isize, ) -> Self::Tok
Creates token either from
sourse
or from pure data in text
Either source
or text
are not NoneSource§fn create_invalid() -> &'input Tok
fn create_invalid() -> &'input Tok
Creates invalid token
Invalid tokens must have
TOKEN_INVALID_TYPE
token type.impl<'input, TF: TidAble<'input>, T: TidAble<'input>> TidAble<'input> for ArenaFactory<'input, TF, T>
Auto Trait Implementations§
impl<'input, TF, T> !Freeze for ArenaFactory<'input, TF, T>
impl<'input, TF, T> !RefUnwindSafe for ArenaFactory<'input, TF, T>
impl<'input, TF, T> Send for ArenaFactory<'input, TF, T>
impl<'input, TF, T> !Sync for ArenaFactory<'input, TF, T>
impl<'input, TF, T> Unpin for ArenaFactory<'input, TF, T>
impl<'input, TF, T> UnwindSafe for ArenaFactory<'input, TF, T>where
TF: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> AnyExt for T
impl<T> AnyExt for T
Source§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
Attempts to downcast this to
T
behind referenceSource§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
Attempts to downcast this to
T
behind mutable referenceSource§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
Attempts to downcast this to
T
behind Rc
pointerSource§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
Attempts to downcast this to
T
behind Arc
pointerSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
Source§impl<'a, X> TidExt<'a> for X
impl<'a, X> TidExt<'a> for X
Source§fn is<T>(&self) -> boolwhere
T: Tid<'a>,
fn is<T>(&self) -> boolwhere
T: Tid<'a>,
Returns true if type behind self is equal to the type of T.
Source§fn downcast_ref<'b, T>(&'b self) -> Option<&'b T>where
T: Tid<'a>,
fn downcast_ref<'b, T>(&'b self) -> Option<&'b T>where
T: Tid<'a>,
Attempts to downcast self to
T
behind referenceSource§fn downcast_mut<'b, T>(&'b mut self) -> Option<&'b mut T>where
T: Tid<'a>,
fn downcast_mut<'b, T>(&'b mut self) -> Option<&'b mut T>where
T: Tid<'a>,
Attempts to downcast self to
T
behind mutable referenceSource§fn downcast_rc<T>(self: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Tid<'a>,
fn downcast_rc<T>(self: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Tid<'a>,
Attempts to downcast self to
T
behind Rc
pointerSource§fn downcast_arc<T>(self: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Tid<'a>,
fn downcast_arc<T>(self: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Tid<'a>,
Attempts to downcast self to
T
behind Arc
pointer