Skip to main content

ViewHandle

Struct ViewHandle 

Source
pub struct ViewHandle { /* private fields */ }
Expand description

A SwiftUI view value, kept concrete.

This used to be one word: a retained AnyView, which every modifier both consumed and produced. That made ownership trivial — a retain and a release — and made every type this crate built a lie by one layer. Swift’s Text("Fx").padding(4) is ModifiedContent<Text, _PaddingLayout>; erasing each step made it ModifiedContent<AnyView, _PaddingLayout>, and the documentation corpus could only ever match 18 of its 89 listings on type.

So the handle carries the value itself, with the metadata and View witness needed to hand it back to Swift. AnyView is not special here — it is simply one of the types a handle can hold, which is what Self::into_anyview produces for the places that genuinely need erasure: a @ViewBuilder closure returning heterogeneous branches, or a container’s children.

Ownership is the value witness table’s business now rather than the refcount’s: initialize_with_copy to clone, destroy to drop. For a view that is a single class reference those are still a retain and a release; for one with several stored properties they do the right thing for each.

Implementations§

Source§

impl ViewHandle

Source

pub fn into_anyview(self) -> Self

This view as an AnyView-typed handle.

Source

pub fn as_ptr(&self) -> *mut c_void

The raw AnyView word, for the render path and the ObjC bridge.

Trait Implementations§

Source§

impl Clone for ViewHandle

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ViewHandle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for ViewHandle

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl IntoView for ViewHandle

Source§

impl Send for ViewHandle

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

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

fn try_from(value: U) -> Result<T, !>

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.