Struct ComponentsQueuedRegistrator

Source
pub struct ComponentsQueuedRegistrator<'w> { /* private fields */ }
Expand description

A type that enables queuing registration in Components.

§Note

These queued registrations return ComponentIds. These ids are not yet valid, but they will become valid when either ComponentsRegistrator::apply_queued_registrations is called or the same registration is made directly. In either case, the returned ComponentIds will be correct, but they are not correct yet.

Generally, that means these ComponentIds can be safely used for read-only purposes. Modifying the contents of the world through these ComponentIds directly without waiting for them to be fully registered and without then confirming that they have been fully registered is not supported. Hence, extra care is needed with these ComponentIds to ensure all safety rules are followed.

As a rule of thumb, if you have mutable access to ComponentsRegistrator, prefer to use that instead. Use this only if you need to know the id of a component but do not need to modify the contents of the world based on that id.

Implementations§

Source§

impl<'w> ComponentsQueuedRegistrator<'w>

Source

pub unsafe fn new( components: &'w Components, ids: &'w ComponentIds, ) -> ComponentsQueuedRegistrator<'w>

Constructs a new ComponentsQueuedRegistrator.

§Safety

The Components and ComponentIds must match. For example, they must be from the same world.

Source

pub fn queue_register_component<T>(&self) -> ComponentId
where T: Component,

This is a queued version of ComponentsRegistrator::register_component. This will reserve an id and queue the registration. These registrations will be carried out at the next opportunity.

If this has already been registered or queued, this returns the previous ComponentId.

§Note

Technically speaking, the returned ComponentId is not valid, but it will become valid later. See type level docs for details.

Source

pub fn queue_register_component_with_descriptor( &self, descriptor: ComponentDescriptor, ) -> ComponentId

This is a queued version of ComponentsRegistrator::register_component_with_descriptor. This will reserve an id and queue the registration. These registrations will be carried out at the next opportunity.

§Note

Technically speaking, the returned ComponentId is not valid, but it will become valid later. See type level docs for details.

Source

pub fn queue_register_resource<T>(&self) -> ComponentId
where T: Resource,

This is a queued version of ComponentsRegistrator::register_resource. This will reserve an id and queue the registration. These registrations will be carried out at the next opportunity.

If this has already been registered or queued, this returns the previous ComponentId.

§Note

Technically speaking, the returned ComponentId is not valid, but it will become valid later. See type level docs for details.

Source

pub fn queue_register_non_send<T>(&self) -> ComponentId
where T: Any,

This is a queued version of ComponentsRegistrator::register_non_send. This will reserve an id and queue the registration. These registrations will be carried out at the next opportunity.

If this has already been registered or queued, this returns the previous ComponentId.

§Note

Technically speaking, the returned ComponentId is not valid, but it will become valid later. See type level docs for details.

Source

pub fn queue_register_resource_with_descriptor( &self, descriptor: ComponentDescriptor, ) -> ComponentId

This is a queued version of ComponentsRegistrator::register_resource_with_descriptor. This will reserve an id and queue the registration. These registrations will be carried out at the next opportunity.

§Note

Technically speaking, the returned ComponentId is not valid, but it will become valid later. See type level docs for details.

Methods from Deref<Target = Components>§

Source

pub fn len(&self) -> usize

Returns the number of components registered or queued with this instance.

Source

pub fn is_empty(&self) -> bool

Returns true if there are no components registered or queued with this instance. Otherwise, this returns false.

Source

pub fn num_queued(&self) -> usize

Returns the number of components registered with this instance.

Source

pub fn any_queued(&self) -> bool

Returns true if there are any components registered with this instance. Otherwise, this returns false.

Source

pub fn num_registered(&self) -> usize

Returns the number of components registered with this instance.

Source

pub fn any_registered(&self) -> bool

Returns true if there are any components registered with this instance. Otherwise, this returns false.

Source

pub fn get_info(&self, id: ComponentId) -> Option<&ComponentInfo>

Gets the metadata associated with the given component, if it is registered. This will return None if the id is not regiserted or is queued.

This will return an incorrect result if id did not come from the same world as self. It may return None or a garbage value.

Source

pub fn get_descriptor<'a>( &'a self, id: ComponentId, ) -> Option<Cow<'a, ComponentDescriptor>>

Gets the ComponentDescriptor of the component with this ComponentId if it is present. This will return None only if the id is neither regisered nor queued to be registered.

Currently, the Cow will be Cow::Owned if and only if the component is queued. It will be Cow::Borrowed otherwise.

This will return an incorrect result if id did not come from the same world as self. It may return None or a garbage value.

Source

pub fn get_name<'a>(&'a self, id: ComponentId) -> Option<Cow<'a, str>>

Gets the name of the component with this ComponentId if it is present. This will return None only if the id is neither regisered nor queued to be registered.

This will return an incorrect result if id did not come from the same world as self. It may return None or a garbage value.

Source

pub unsafe fn get_info_unchecked(&self, id: ComponentId) -> &ComponentInfo

Gets the metadata associated with the given component.

§Safety

id must be a valid and fully registered ComponentId.

Source

pub fn is_id_valid(&self, id: ComponentId) -> bool

Returns true if the ComponentId is fully registered and valid. Ids may be invalid if they are still queued to be registered. Those ids are still correct, but they are not usable in every context yet.

Source

pub fn get_valid_id(&self, type_id: TypeId) -> Option<ComponentId>

Type-erased equivalent of Components::valid_component_id().

Source

pub fn valid_component_id<T>(&self) -> Option<ComponentId>
where T: Component,

Returns the ComponentId of the given Component type T if it is fully registered. If you want to include queued registration, see Components::component_id().

use bevy_ecs::prelude::*;

let mut world = World::new();

#[derive(Component)]
struct ComponentA;

let component_a_id = world.register_component::<ComponentA>();

assert_eq!(component_a_id, world.components().valid_component_id::<ComponentA>().unwrap())
§See also
Source

pub fn get_valid_resource_id(&self, type_id: TypeId) -> Option<ComponentId>

Type-erased equivalent of Components::valid_resource_id().

Source

pub fn valid_resource_id<T>(&self) -> Option<ComponentId>
where T: Resource,

Returns the ComponentId of the given Resource type T if it is fully registered. If you want to include queued registration, see Components::resource_id().

use bevy_ecs::prelude::*;

let mut world = World::new();

#[derive(Resource, Default)]
struct ResourceA;

let resource_a_id = world.init_resource::<ResourceA>();

assert_eq!(resource_a_id, world.components().valid_resource_id::<ResourceA>().unwrap())
§See also
Source

pub fn get_id(&self, type_id: TypeId) -> Option<ComponentId>

Type-erased equivalent of Components::component_id().

Source

pub fn component_id<T>(&self) -> Option<ComponentId>
where T: Component,

Returns the ComponentId of the given Component type T.

The returned ComponentId is specific to the Components instance it was retrieved from and should not be used with another Components instance.

Returns None if the Component type has not yet been initialized using ComponentsRegistrator::register_component() or ComponentsQueuedRegistrator::queue_register_component().

use bevy_ecs::prelude::*;

let mut world = World::new();

#[derive(Component)]
struct ComponentA;

let component_a_id = world.register_component::<ComponentA>();

assert_eq!(component_a_id, world.components().component_id::<ComponentA>().unwrap())
§See also
Source

pub fn get_resource_id(&self, type_id: TypeId) -> Option<ComponentId>

Type-erased equivalent of Components::resource_id().

Source

pub fn resource_id<T>(&self) -> Option<ComponentId>
where T: Resource,

Returns the ComponentId of the given Resource type T.

The returned ComponentId is specific to the Components instance it was retrieved from and should not be used with another Components instance.

Returns None if the Resource type has not yet been initialized using ComponentsRegistrator::register_resource() or ComponentsQueuedRegistrator::queue_register_resource().

use bevy_ecs::prelude::*;

let mut world = World::new();

#[derive(Resource, Default)]
struct ResourceA;

let resource_a_id = world.init_resource::<ResourceA>();

assert_eq!(resource_a_id, world.components().resource_id::<ResourceA>().unwrap())
§See also
Source

pub fn iter_registered(&self) -> impl Iterator<Item = &ComponentInfo>

Gets an iterator over all components fully registered with this instance.

Trait Implementations§

Source§

impl<'w> Clone for ComponentsQueuedRegistrator<'w>

Source§

fn clone(&self) -> ComponentsQueuedRegistrator<'w>

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

impl Deref for ComponentsQueuedRegistrator<'_>

Source§

type Target = Components

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<ComponentsQueuedRegistrator<'_> as Deref>::Target

Dereferences the value.
Source§

impl<'w> Copy for ComponentsQueuedRegistrator<'w>

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

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

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

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

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

Converts &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)

Converts &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> 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> 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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> Upcast<T> for T

Source§

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

Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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