Struct chunked::world::World[][src]

pub struct World { /* fields omitted */ }

A World manages an evolving series of Snapshots.

Worlds introduce the ability to do parallel work on a snapshot at the cost of requiring futures in most cases.

You can create an empty world with an empty snapshot with World::new().

Cloning the World produces another view onto the same world.

Implementations

impl World[src]

pub fn new(universe: Arc<Universe>) -> World[src]

Create a new world.

pub fn with_snapshot(snapshot: Arc<Snapshot>) -> World[src]

Create a new world with a given initial snapshot.

pub fn universe(&self) -> &Arc<Universe>[src]

Return the universe this world exists inside.

pub async fn into_snapshot(self) -> Arc<Snapshot>[src]

Drop this world and return the contained snapshot.

If this is not the last view onto the same world, an error will be returned with its original value.

pub async fn snapshot(&self) -> Arc<Snapshot>[src]

Create a snapshot of the current world state.

pub async fn replace_snapshot(&self, snapshot: Arc<Snapshot>) -> Arc<Snapshot>[src]

Replace the snapshot of the world, returning the old snapshot.

pub async fn take_snapshot(&self) -> Arc<Snapshot>[src]

Take the current snapshot of the world and clear it.

Generally this is designed to be used as a performance optimisation: if nobody else has a reference to the Snapshot, it can be modified freely.

pub async fn set_snapshot(&self, snapshot: Arc<Snapshot>)[src]

Set the current state of the world.

pub async fn clear(&self)[src]

Clear all entities from the world.

pub async fn exclusive_transaction<F>(&self, f: F) where
    F: FnOnce(&mut Arc<Snapshot>) + Send
[src]

Modify the snapshot.

This takes the write lock for the snapshot for the entirety of the call to f() and should be used sparingly.

A good use is for applying command buffers, since it can avoid extra memory allocation.

pub async fn transaction<F>(&self, locks: impl Into<Vec<Lock>>, f: F) where
    F: FnOnce(TransactionGuard<'a>) + Send + 'static, 
[src]

Run a non-structural transaction.

Auto Trait Implementations

impl !RefUnwindSafe for World

impl Send for World

impl Sync for World

impl Unpin for World

impl !UnwindSafe for World

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Pointable for T

pub const ALIGN: usize

The alignment of pointer.

type Init = T

The type for initializers.

pub unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more

pub unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more

pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more

pub unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.