Struct bevy_quill::ViewAdapter

source ·
pub struct ViewAdapter<V>
where V: View,
{ /* private fields */ }
Expand description

A ViewAdapter is a stateless object that can be used to access an object implementing View in a type-erased fashion, without needing to store a dyn View. This allows querying for ECS components that contain implementations of the View trait without knowing the concrete type. Note that it must be stateless since it is created statically, and passed around by static reference.

In order for this to work, two ECS components are needed: ViewThunk and a second component to actually hold the concrete view, such as ViewStateCell.

ViewThunk is a type-erased component that provides access to the concrete View via the ViewAdapter. ViewStateCell is a component that contains the actual View and it’s state. Because ViewStateCell is generic, it cannot be queried directly (since it would require a separate query for every specialization), so we use ViewThunk as an adapter. ViewAdapter also can work with other component types that contain a View implementation.

The the methods of ViewAdapter and ViewThunk take an entity id to identify the view rather than self``; the self` parameter is only there to make the methods dyn-trait compatible. This allows the adapter to be created as a static object, since all of its state is external.

See AnyViewAdapter and ViewThunk.

Trait Implementations§

source§

impl<V> AnyViewAdapter for ViewAdapter<V>
where V: View,

source§

fn nodes(&self, world: &mut World, entity: Entity) -> NodeSpan

Return the span of entities produced by this View.
source§

fn rebuild( &self, world: &mut World, entity: Entity, scope: &mut TrackingScope, ) -> bool

Update the internal state of this view, re-creating any UiNodes. Returns true if the output changed, that is, if nodes() would return a different value than it did before the rebuild.
source§

fn raze(&self, world: &mut World, entity: Entity)

Recursively despawn any child entities that were created as a result of calling .build(). This calls .raze() for any nested views within the current view state.
source§

fn attach_children(&self, world: &mut World, entity: Entity) -> bool

Instructs the view to attach any child entities to the parent entity. This is called whenever we know that one or more child entities have changed.

Auto Trait Implementations§

§

impl<V> Freeze for ViewAdapter<V>

§

impl<V> RefUnwindSafe for ViewAdapter<V>
where V: RefUnwindSafe,

§

impl<V> Send for ViewAdapter<V>

§

impl<V> Sync for ViewAdapter<V>

§

impl<V> Unpin for ViewAdapter<V>
where V: Unpin,

§

impl<V> UnwindSafe for ViewAdapter<V>
where V: UnwindSafe,

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, U> AsBindGroupShaderType<U> for T
where U: ShaderType, &'a T: for<'a> Into<U>,

source§

fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U

Return the T ShaderType for self. When used in AsBindGroup derives, it is safe to assume that all images in self exist.
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> Downcast<T> for T

source§

fn downcast(&self) -> &T

source§

impl<T> Downcast for T
where T: Any,

source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
source§

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

source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<S> FromSample<S> for S

source§

fn from_sample_(s: S) -> S

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, U> ToSample<U> for T
where U: FromSample<T>,

source§

fn to_sample_(self) -> U

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

impl<T> Upcast<T> for T

source§

fn upcast(&self) -> Option<&T>

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> ConditionalSend for T
where T: Send,

source§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,

source§

impl<T> Settings for T
where T: 'static + Send + Sync,

source§

impl<T> WasmNotSend for T
where T: Send,

source§

impl<T> WasmNotSendSync for T

source§

impl<T> WasmNotSync for T
where T: Sync,