pub struct EntityList<I: IEntityListNodeID> {
pub head: I,
pub tail: I,
pub len: Cell<usize>,
}Fields§
§head: I§tail: I§len: Cell<usize>Implementations§
Source§impl<I: IEntityListNodeID> EntityList<I>
impl<I: IEntityListNodeID> EntityList<I>
Sourcepub fn new(alloc: &EntityAlloc<I::ObjectT, I::PolicyT>) -> Self
pub fn new(alloc: &EntityAlloc<I::ObjectT, I::PolicyT>) -> Self
create a new empty list with head and tail sentinels linked with each other.
Sourcepub fn get_front_id(
&self,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> Option<I>
pub fn get_front_id( &self, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> Option<I>
try to get the front node ID, or None if the list is empty
Sourcepub fn get_back_id(
&self,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> Option<I>
pub fn get_back_id( &self, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> Option<I>
try to get the back node ID, or None if the list is empty
Sourcepub fn node_add_next(
&self,
node: I,
new_node: I,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> EntityListRes<I>
pub fn node_add_next( &self, node: I, new_node: I, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> EntityListRes<I>
Add a new node after an existing node linked to this list.
If the current node is linked to another list, then the operation is undefined. You’ll get a broken list without reporting an error.
§Signal invocation
node_add_next will invoke on_push_next on node before modifying any links.
If the signal returns an error, the operation is aborted without modifying any links.
Sourcepub fn node_add_prev(
&self,
node: I,
new_node: I,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> EntityListRes<I>
pub fn node_add_prev( &self, node: I, new_node: I, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> EntityListRes<I>
Add a new node before an existing node linked to this list.
If the current node is linked to another list, then the operation is undefined. You’ll get a broken list without reporting an error.
§Signal invocation
node_add_prev will invoke on_push_prev on node before modifying any links.
If the signal returns an error, the operation is aborted without modifying any links.
Sourcepub fn node_unplug(
&self,
node: I,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> EntityListRes<I>
pub fn node_unplug( &self, node: I, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> EntityListRes<I>
Unplug a node from the list.
§Signal invocation
node_unplug will invoke on_unplug on node before modifying any links.
If the signal returns an error, the operation is aborted without modifying any links.
Sourcepub fn push_back_id(
&self,
new_node: I,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> EntityListRes<I>
pub fn push_back_id( &self, new_node: I, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> EntityListRes<I>
Push a new node to the back of the list.
Sourcepub fn push_front_id(
&self,
new_node: I,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> EntityListRes<I>
pub fn push_front_id( &self, new_node: I, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> EntityListRes<I>
Push a new node to the front of the list.
Sourcepub fn pop_back(
&self,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> EntityListRes<I, I>
pub fn pop_back( &self, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> EntityListRes<I, I>
Pop a node from the back of the list.
Sourcepub fn pop_front(
&self,
alloc: &EntityAlloc<I::ObjectT, I::PolicyT>,
) -> EntityListRes<I, I>
pub fn pop_front( &self, alloc: &EntityAlloc<I::ObjectT, I::PolicyT>, ) -> EntityListRes<I, I>
Pop a node from the front of the list.