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>

source

pub fn new(list: L) -> Self

New list.

source

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.

source

pub fn downgrade(&self) -> WeakNodeList<L>

Creates a WeakNodeList<L> reference to this list.

source

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.

source

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.

source

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.

source

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).

source

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>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> StateValue for T
where T: Any + Send + Sync,