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§
Sourcefn has_members(&self) -> bool
fn has_members(&self) -> bool
Returns true
of the namespace contains any members, else false
.
Sourcefn member_count(&self) -> usize
fn member_count(&self) -> usize
Returns the number of members in the namespace.
Sourcefn contains_member(&self, name: &Identifier) -> bool
fn contains_member(&self, name: &Identifier) -> bool
Returns true
if the namespace contains a member named name
, else false
.
Sourcefn member(&self, name: &Identifier) -> Option<&Self::Member>
fn member(&self, name: &Identifier) -> Option<&Self::Member>
Return the member with the name name
, if present.
Sourcefn members(&self) -> impl Iterator<Item = &Self::Member>
fn members(&self) -> impl Iterator<Item = &Self::Member>
Returns an iterator over all members in the namespace.
Sourcefn members_mut(&mut self) -> impl Iterator<Item = &mut Self::Member>
fn members_mut(&mut self) -> impl Iterator<Item = &mut Self::Member>
Returns an iterator over mutable members in the namespace.
Sourcefn member_names(&self) -> impl Iterator<Item = &Identifier>
fn member_names(&self) -> impl Iterator<Item = &Identifier>
Returns an iterator over the names of namespace members.
Sourcefn add_to_members(&mut self, value: Self::Member) -> Option<Self::Member>
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.
Sourcefn extend_members<I>(&mut self, extension: I)where
I: IntoIterator<Item = Self::Member>,
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.