pub struct ModNode<T, U> { /* private fields */ }Expand description
A structure of module node.
The module nodes creates a tree of modules that has modules and variables. The module node contains the modules which are the module nodes, the variables, and module value. Also, the module node has used modules and used variables. The used modules and the used variables are from other module, but also are available in the module node by identifiers.
Implementations§
Source§impl<T, U> ModNode<T, U>
impl<T, U> ModNode<T, U>
Sourcepub fn used_mods(&self) -> &HashMap<String, ModNodeRef<T, U>>
pub fn used_mods(&self) -> &HashMap<String, ModNodeRef<T, U>>
Returns the used modules.
Sourcepub fn has_used_mod(&self, ident: &String) -> bool
pub fn has_used_mod(&self, ident: &String) -> bool
Returns true if the module node has the used module, otherwise false.
Sourcepub fn used_mod(&self, ident: &String) -> Option<&ModNodeRef<T, U>>
pub fn used_mod(&self, ident: &String) -> Option<&ModNodeRef<T, U>>
Returns the reference to the used module if the module node has the used module,
otherwise None.
Sourcepub fn add_used_mod(
mod1: &Arc<RwLock<ModNode<T, U>>>,
ident: String,
used_mod: Arc<RwLock<ModNode<T, U>>>,
) -> Result<()>
pub fn add_used_mod( mod1: &Arc<RwLock<ModNode<T, U>>>, ident: String, used_mod: Arc<RwLock<ModNode<T, U>>>, ) -> Result<()>
Adds the used module to the module node.
Sourcepub fn remove_used_mod(&mut self, ident: &String)
pub fn remove_used_mod(&mut self, ident: &String)
Removes the used module from the module node.
Sourcepub fn used_vars(&self) -> &HashMap<String, UsedVar<T, U>>
pub fn used_vars(&self) -> &HashMap<String, UsedVar<T, U>>
Returns the used variable from the module node.
Sourcepub fn has_used_var(&self, ident: &String) -> bool
pub fn has_used_var(&self, ident: &String) -> bool
Returns true if the module node has the used variable, otherwise false.
Sourcepub fn used_var(&self, ident: &String) -> Option<&UsedVar<T, U>>
pub fn used_var(&self, ident: &String) -> Option<&UsedVar<T, U>>
Returns the object of used variable if the module node has the used variable, otherwise
None.
Sourcepub fn add_used_var(
mod1: &Arc<RwLock<ModNode<T, U>>>,
ident: String,
used_var_mod: Arc<RwLock<ModNode<T, U>>>,
used_var_ident: String,
) -> Result<()>
pub fn add_used_var( mod1: &Arc<RwLock<ModNode<T, U>>>, ident: String, used_var_mod: Arc<RwLock<ModNode<T, U>>>, used_var_ident: String, ) -> Result<()>
Adds the used variable to the module node.
Sourcepub fn remove_used_var(&mut self, ident: &String)
pub fn remove_used_var(&mut self, ident: &String)
Removes the used variable from the module node.
Sourcepub fn has_mod(&self, ident: &String) -> bool
pub fn has_mod(&self, ident: &String) -> bool
Returns true if the module node has the module, otherwise false.
Sourcepub fn mod1(&self, ident: &String) -> Option<&Arc<RwLock<ModNode<T, U>>>>
pub fn mod1(&self, ident: &String) -> Option<&Arc<RwLock<ModNode<T, U>>>>
Returns the module if the module node has the module, otherwise None.
Sourcepub fn add_mod(
parent: &Arc<RwLock<ModNode<T, U>>>,
ident: String,
child: Arc<RwLock<ModNode<T, U>>>,
) -> Result<()>
pub fn add_mod( parent: &Arc<RwLock<ModNode<T, U>>>, ident: String, child: Arc<RwLock<ModNode<T, U>>>, ) -> Result<()>
Adds the module to the module node.
Sourcepub fn remove_mod(&mut self, ident: &String) -> Result<()>
pub fn remove_mod(&mut self, ident: &String) -> Result<()>
Removes the module from the module node.
Sourcepub fn has_var(&self, ident: &String) -> bool
pub fn has_var(&self, ident: &String) -> bool
Returns true if the module node has the variable, otherwise false.
Sourcepub fn var(&self, ident: &String) -> Option<&T>
pub fn var(&self, ident: &String) -> Option<&T>
Returns the variable if the module node has the variable, otherwise None.
Sourcepub fn remove_var(&mut self, ident: &String)
pub fn remove_var(&mut self, ident: &String)
Removes the variable from module node.
Sourcepub fn parent(&self) -> Option<Arc<RwLock<ModNode<T, U>>>>
pub fn parent(&self) -> Option<Arc<RwLock<ModNode<T, U>>>>
Returns the parent if the module node if the module node has the parent, otherwise None.
Sourcepub fn mod_from(
root: &Arc<RwLock<ModNode<T, U>>>,
idents: &[String],
are_used_mods: bool,
) -> Result<Option<Arc<RwLock<ModNode<T, U>>>>>
pub fn mod_from( root: &Arc<RwLock<ModNode<T, U>>>, idents: &[String], are_used_mods: bool, ) -> Result<Option<Arc<RwLock<ModNode<T, U>>>>>
Returns the module for the identifiers of modules if the module exists, otherwise None.
If flag of used modules is set, the first identifier of module can refers to the used module.
Trait Implementations§
Auto Trait Implementations§
impl<T, U> Freeze for ModNode<T, U>where
U: Freeze,
impl<T, U> RefUnwindSafe for ModNode<T, U>where
U: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, U> Send for ModNode<T, U>
impl<T, U> Sync for ModNode<T, U>
impl<T, U> Unpin for ModNode<T, U>
impl<T, U> UnsafeUnpin for ModNode<T, U>where
U: UnsafeUnpin,
impl<T, U> UnwindSafe for ModNode<T, U>where
U: UnwindSafe,
T: UnwindSafe,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.