pub struct DynNode<T = Nothing>(pub Rc<RefCell<Box<dyn DynamicTokens>>>, _);Expand description
Parses a T (default: Nothing). Allows one to replace it at runtime, after parsing with
anything else implementing ToTokens. This is backed by a Rc. One can replace any
cloned occurrences or only the current one.
§Example
let mut token_iter = "foo".to_token_iter();
let parsed = <DynNode<Ident>>::parser(&mut token_iter).unwrap();
assert_tokens_eq!(parsed, "foo");
let _test: Ident = parsed.downcast_ref::<Ident>().unwrap().clone();
// Global replacement of all cloned locations (parsed & other)
let mut other = parsed.clone();
other.replace_all_with(<Cons<ConstInteger<123>, Comma>>::default());
assert_tokens_eq!(parsed, "123,");
// Local replacement (only other)
other.replace_here_with(Bang::default());
assert_tokens_eq!(other, "!");
assert_tokens_eq!(parsed, "123,");Tuple Fields§
§0: Rc<RefCell<Box<dyn DynamicTokens>>>Implementations§
Source§impl<T> DynNode<T>
impl<T> DynNode<T>
Sourcepub fn replace_all_with<U: DynamicTokens>(
&self,
this: U,
) -> Box<dyn DynamicTokens>
pub fn replace_all_with<U: DynamicTokens>( &self, this: U, ) -> Box<dyn DynamicTokens>
Replaces the interior of a DynNode at all locations that cloned this, returns the
old content.
Sourcepub fn replace_here_with<U: DynamicTokens>(&mut self, this: U) -> Self
pub fn replace_here_with<U: DynamicTokens>(&mut self, this: U) -> Self
Detaches this DynNode, insert new content, returns Self with the old content.
Sourcepub fn downcast_ref<U: DynamicTokens>(&self) -> Option<Ref<'_, U>>
pub fn downcast_ref<U: DynamicTokens>(&self) -> Option<Ref<'_, U>>
Casts a DynNode to a reference to a concrete type. Will return None on type error.
Trait Implementations§
Source§impl<T> ToTokens for DynNode<T>
impl<T> ToTokens for DynNode<T>
Source§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
Source§fn into_token_iter(self) -> TokenIter ⓘwhere
Self: Sized,
fn into_token_iter(self) -> TokenIter ⓘwhere
Self: Sized,
Convert
self into a TokenIter object.Source§fn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
Convert
&self into a TokenStream object.Source§fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
Convert
self into a TokenStream object.Auto Trait Implementations§
impl<T = Nothing> !RefUnwindSafe for DynNode<T>
impl<T = Nothing> !Send for DynNode<T>
impl<T = Nothing> !Sync for DynNode<T>
impl<T = Nothing> !UnwindSafe for DynNode<T>
impl<T> Freeze for DynNode<T>
impl<T> Unpin for DynNode<T>where
T: Unpin,
impl<T> UnsafeUnpin for DynNode<T>
Blanket Implementations§
Source§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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DynamicTokens for T
impl<T> DynamicTokens for T
Source§impl<T> Parse for Twhere
T: Parser,
impl<T> Parse for Twhere
T: Parser,
Source§fn parse(tokens: &mut TokenIter) -> Result<Self>
fn parse(tokens: &mut TokenIter) -> Result<Self>
This is the user facing API to parse grammatical entities. Calls a
parser() within a
transaction. Commits changes on success and returns the parsed value. Read more