Trait Namespace

Source
pub trait Namespace {
    type Member: HasName;

    // Required methods
    fn has_members(&self) -> bool;
    fn member_count(&self) -> usize;
    fn contains_member(&self, name: &Identifier) -> bool;
    fn member(&self, name: &Identifier) -> Option<&Self::Member>;
    fn members(&self) -> impl Iterator<Item = &Self::Member>;
    fn members_mut(&mut self) -> impl Iterator<Item = &mut Self::Member>;
    fn member_names(&self) -> impl Iterator<Item = &Identifier>;
    fn add_to_members(&mut self, value: Self::Member) -> Option<Self::Member>;
    fn extend_members<I>(&mut self, extension: I)
       where I: IntoIterator<Item = Self::Member>;
}
Expand description

This trait is implemented by types that have uniquely named members such as modules and structures.

Required Associated Types§

Required Methods§

Source

fn has_members(&self) -> bool

Returns true of the namespace contains any members, else false.

Source

fn member_count(&self) -> usize

Returns the number of members in the namespace.

Source

fn contains_member(&self, name: &Identifier) -> bool

Returns true if the namespace contains a member named name, else false.

Source

fn member(&self, name: &Identifier) -> Option<&Self::Member>

Return the member with the name name, if present.

Source

fn members(&self) -> impl Iterator<Item = &Self::Member>

Returns an iterator over all members in the namespace.

Source

fn members_mut(&mut self) -> impl Iterator<Item = &mut Self::Member>

Returns an iterator over mutable members in the namespace.

Source

fn member_names(&self) -> impl Iterator<Item = &Identifier>

Returns an iterator over the names of namespace members.

Source

fn add_to_members(&mut self, value: Self::Member) -> Option<Self::Member>

Add a member to the namespace. If a member already existed with the same name it will be returned.

Source

fn extend_members<I>(&mut self, extension: I)
where I: IntoIterator<Item = Self::Member>,

Add the members of the extension to the namespace. Any existing members with the same names will be replaced.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§