Skip to main content

BundleWriter

Struct BundleWriter 

Source
pub struct BundleWriter<'a>(/* private fields */);
Expand description

Enables pushing components to the internal BundleScratch, which can then be written as a dynamic bundle.

Components pushed to this writer should either be followed by a BundleWriter::write or a BundleScratch::manual_drop to avoid leaking.

Implementations§

Source§

impl<'a> BundleWriter<'a>

Source

pub unsafe fn push_component<C: Component>( &mut self, components: &mut ComponentsRegistrator<'_>, component: C, )

Pushes the given component to the back of the current bundle scratch space. It will register the component in components if it does not already exist.

§Safety

components must be from the same world that all previous Self::push_component or Self::push_component_by_id calls were called with, and the next Self::write or Self::write_with_relationship_hook_insert_mode call.

Source

pub unsafe fn push_component_by_id( &mut self, id: ComponentId, component: OwningPtr<'_>, layout: Layout, )

Pushes the given component ptr to the back of the current bundle scratch space.

§Safety

components must be from the same world that all previous Self::push_component or Self::push_component_by_id calls were called with, and the next Self::write or Self::write_with_relationship_hook_insert_mode call. component must point to a Component value that matches id. layout must correspond to the layout of the Component type.

Source

pub unsafe fn write(self, entity: &mut EntityWorldMut<'_>)

Writes the current contents of the bundle to the given entity and clears the scratch space.

Runs with RelationshipHookMode::Run by default. Use write_with_relationship_hook_insert_mode if you need more flexibility.

§Safety

entity must be from the same world that all Self::push_component or Self::push_component_by_id calls since the last Self::write or Self::write_with_relationship_hook_insert_mode were called with.

Source

pub unsafe fn write_with_relationship_hook_insert_mode( self, entity: &mut EntityWorldMut<'_>, relationship_hook_insert_mode: RelationshipHookMode, )

Writes the current contents of the bundle to the given entity and clears the scratch space.

Also accepts RelationshipHookMode as an argument. Prefer write to this if RelationshipHookMode::Run by default is enough.

§Safety

entity must be from the same world that all Self::push_component or Self::push_component_by_id calls since the last Self::write or Self::write_with_relationship_hook_insert_mode were called with.

Source

pub fn is_empty(&self) -> bool

Returns true if there are currently no components.

Auto Trait Implementations§

§

impl<'a> Freeze for BundleWriter<'a>

§

impl<'a> !RefUnwindSafe for BundleWriter<'a>

§

impl<'a> Send for BundleWriter<'a>

§

impl<'a> !Sync for BundleWriter<'a>

§

impl<'a> Unpin for BundleWriter<'a>

§

impl<'a> UnsafeUnpin for BundleWriter<'a>

§

impl<'a> !UnwindSafe for BundleWriter<'a>

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> 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> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

impl<T> Identity for T
where T: ?Sized,

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
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> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<A> Is for A
where A: Any,

Source§

fn is<T>() -> bool
where T: Any,

Checks if the current type “is” another type, using a TypeId equality comparison. This is most useful in the context of generic logic. 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> ConditionalSend for T
where T: Send,

Source§

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