Struct zng_app::widget::node::ArcNode

source ·
pub struct ArcNode<U: UiNode>(/* private fields */);
Expand description

A reference counted UiNode.

Nodes can only be used in one place at a time, this struct allows the creation of slots that are UiNode implementers that can exclusive take the referenced node as its child.

When a slot takes the node it is deinited in the previous place and reinited in the slot place.

Slots hold a strong reference to the node when they have it as their child and a weak reference when they don’t.

Implementations§

source§

impl<U: UiNode> ArcNode<U>

source

pub fn new(node: U) -> Self

New node.

source

pub fn new_cyclic(node: impl FnOnce(WeakNode<U>) -> U) -> Self

New node that contains a weak reference to itself.

Note that the weak reference cannot be upgraded during the call to node.

source

pub fn downgrade(&self) -> WeakNode<U>

Creates a WeakNode<U> reference to this node.

source

pub fn set(&self, new_node: U)

Replace the current node with the new_node in the current slot.

The previous node is deinited and the new_node is inited.

source

pub fn take_when(&self, var: impl IntoVar<bool>) -> TakeSlot<U, impl TakeOn>

Create a slot node that takes ownership of this node when var updates to true.

The slot node also takes ownership on init if the var is already true.

source

pub fn take_on<A: EventArgs>( &self, event: Event<A>, filter: impl FnMut(&A) -> bool + Send + 'static, take_on_init: bool ) -> TakeSlot<U, impl TakeOn>

Create a slot node that takes ownership of this node when event updates and filter returns true.

The slot node also takes ownership on init if take_on_init is true.

source

pub fn take_on_init(&self) -> TakeSlot<U, impl TakeOn>

Create a slot node that takes ownership of this node as soon as the node is inited.

This is equivalent to self.take_when(true).

source

pub fn try_context<R>( &self, update_mode: WidgetUpdateMode, f: impl FnOnce() -> R ) -> Option<R>

Calls f in the context of the node, if it can be locked and is a full widget.

Trait Implementations§

source§

impl<U: UiNode> Clone for ArcNode<U>

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<U> Freeze for ArcNode<U>

§

impl<U> !RefUnwindSafe for ArcNode<U>

§

impl<U> Send for ArcNode<U>

§

impl<U> Sync for ArcNode<U>

§

impl<U> Unpin for ArcNode<U>

§

impl<U> !UnwindSafe for ArcNode<U>

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> 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,

§

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>,

§

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>,

§

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,