ArcNode

Struct ArcNode 

Source
pub struct ArcNode(/* 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 ArcNode

Source

pub fn new(node: impl IntoUiNode) -> Self

New node.

Source

pub fn new_cyclic(node: impl FnOnce(WeakNode) -> UiNode) -> 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

Creates a WeakNode reference to this node.

Source

pub fn set(&self, new_node: impl IntoUiNode)

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

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, F>( &self, event: Event<A>, filter: F, take_on_init: bool, ) -> UiNode
where A: EventArgs, F: FnMut(&A) -> bool + Send + 'static,

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

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_node<R>(&self, visitor: impl FnOnce(&mut UiNode) -> R) -> Option<R>

Call visitor on a exclusive lock of the node.

Note that the node is not visited in their current slot context, only use this to inspect state.

Returns None if the node is locked, this will happen if calling from inside the node or an ancestor.

Source

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

Calls visitor in the widget context of the node, if it is an widget.

Note that only the widget context is loaded in visitor, not the full slot context.

Returns None if the node is locked or is not an widget. The node will be locked if calling from inside the node or an ancestor.

Trait Implementations§

Source§

impl Clone for ArcNode

Source§

fn clone(&self) -> Self

Returns a duplicate 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§

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, dest: *mut u8)

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

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.
Source§

impl<T> WithSubscriber for T

Source§

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

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,