Struct zng_app::widget::node::ArcNodeList
source · pub struct ArcNodeList<L: UiNodeList>(/* private fields */);Expand description
A reference counted UiNodeList.
Nodes can only be used in one place at a time, this struct allows the
creation of slots that are UiNodeList implementers that can exclusive take the
referenced list as the children.
When a slot takes the list it is deinited in the previous place and reinited in the slot place.
Slots hold a strong reference to the list when they have it as their child and a weak reference when they don’t.
Implementations§
source§impl<L: UiNodeList> ArcNodeList<L>
impl<L: UiNodeList> ArcNodeList<L>
sourcepub fn new_cyclic(list: impl FnOnce(WeakNodeList<L>) -> L) -> Self
pub fn new_cyclic(list: impl FnOnce(WeakNodeList<L>) -> L) -> Self
New rc list that contains a weak reference to itself.
Note that the weak reference cannot be upgraded during the call to list.
sourcepub fn downgrade(&self) -> WeakNodeList<L>
pub fn downgrade(&self) -> WeakNodeList<L>
Creates a WeakNodeList<L> reference to this list.
sourcepub fn set(&self, new_list: L)
pub fn set(&self, new_list: L)
Replace the current list with the new_list in the current slot.
The previous list is deinited and the new_list is inited.
sourcepub fn take_when(&self, var: impl IntoVar<bool>) -> TakeSlot<L, impl TakeOn>
pub fn take_when(&self, var: impl IntoVar<bool>) -> TakeSlot<L, impl TakeOn>
Create a slot list that takes ownership of this list when var updates to true.
The slot node also takes ownership on init if the var is already true.
The return type implements UiNodeList.
sourcepub fn take_on<A: EventArgs>(
&self,
event: Event<A>,
filter: impl FnMut(&A) -> bool + Send + 'static,
take_on_init: bool,
) -> TakeSlot<L, impl TakeOn>
pub fn take_on<A: EventArgs>( &self, event: Event<A>, filter: impl FnMut(&A) -> bool + Send + 'static, take_on_init: bool, ) -> TakeSlot<L, impl TakeOn>
Create a slot list that takes ownership of this list when event updates and filter returns true.
The slot list also takes ownership on init if take_on_init is true.
The return type implements UiNodeList.
sourcepub fn take_on_init(&self) -> TakeSlot<L, impl TakeOn>
pub fn take_on_init(&self) -> TakeSlot<L, impl TakeOn>
Create a slot node list that takes ownership of this list as soon as the node is inited.
This is equivalent to self.take_when(true).
sourcepub fn for_each_ctx(&self, update_mode: WidgetUpdateMode, f: impl FnMut(usize))
pub fn for_each_ctx(&self, update_mode: WidgetUpdateMode, f: impl FnMut(usize))
Iterate over widget contexts.
Trait Implementations§
source§impl<L: UiNodeList> Clone for ArcNodeList<L>
impl<L: UiNodeList> Clone for ArcNodeList<L>
Auto Trait Implementations§
impl<L> Freeze for ArcNodeList<L>
impl<L> !RefUnwindSafe for ArcNodeList<L>
impl<L> Send for ArcNodeList<L>
impl<L> Sync for ArcNodeList<L>
impl<L> Unpin for ArcNodeList<L>
impl<L> !UnwindSafe for ArcNodeList<L>
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more