Skip to main content

ResourceKinds

Struct ResourceKinds 

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

Protocol-wide table marking which ComponentKinds are Replicated Resources (vs ordinary components).

A Resource type R is registered via Protocol::add_resource::<R>(), which:

  1. Calls component_kinds.add_component::<R>() to allocate a normal ComponentKind + NetId for R. Resources reuse the component wire encoding 100% — they ARE components, just on a hidden singleton entity.
  2. Records the resulting ComponentKind in this table so the receiver side can recognize incoming SpawnWithComponents messages whose components are resources, and populate its ResourceRegistry accordingly.

There is no wire representation of ResourceKinds itself — the table is built identically on both sides from the same ProtocolPlugin registration order, exactly like ComponentKinds.

Implementations§

Source§

impl ResourceKinds

Source

pub fn new() -> Self

Creates an empty ResourceKinds table.

Source

pub fn register<R: 'static>(&mut self, kind: ComponentKind)

Register R as a resource kind. Idempotent: re-registering the same type is a no-op (matches the add_component re-registration semantics — the component table dedupes on TypeId).

R: 'static is the only bound — internal callers always have the full Replicate bound, but this method only uses TypeId::of::<R>() so we don’t impose more.

Source

pub fn is_resource(&self, kind: &ComponentKind) -> bool

O(1) — is the given ComponentKind a registered resource?

Source

pub fn kind_for<R: 'static>(&self) -> Option<ComponentKind>

Return the ComponentKind registered for R, or None if R was never registered as a resource.

Implementation note: ComponentKind is TypeId-keyed (shared/src/world/component/component_kinds.rs:53), so we construct the kind from R’s TypeId and check membership.

Source

pub fn len(&self) -> usize

Number of registered resource kinds.

Source

pub fn is_empty(&self) -> bool

Returns true if no resource kinds have been registered.

Source

pub fn iter(&self) -> impl Iterator<Item = &ComponentKind>

Iterate over all registered resource kinds.

Trait Implementations§

Source§

impl Clone for ResourceKinds

Source§

fn clone(&self) -> ResourceKinds

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 Default for ResourceKinds

Source§

fn default() -> ResourceKinds

Returns the “default value” for a type. 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, 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 = 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V