sdml_core::model

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.

Object Safety§

This trait is not object safe.

Implementors§