Struct Persistent

Source
pub struct Persistent<R: Resource + Serialize + DeserializeOwned> { /* private fields */ }
Expand description

A persistent resource.

Persistent resources are Bevy resources which are automatically synchronized with the disk.

They require a name for logging, a path to be saved to and loaded from, a storage format, and a default resource in case the persistent resource is created for the first time.

They are synchronized with the disk from the moment of their creation.

Implementations§

Source§

impl<R: Resource + Serialize + DeserializeOwned> Persistent<R>

Source

pub fn builder() -> PersistentBuilder<R>

Creates a persistent resource builder.

Source

pub fn new( name: impl ToString, format: StorageFormat, storage: Storage, loaded: bool, default: R, revertible: bool, revert_to_default_on_deserialization_errors: bool, ) -> Result<Persistent<R>, PersistenceError>

Creates a persistent resource.

§Panics

Panics if revert_to_default_on_deserialization_errors is set to true but revertible is set to false.

Source§

impl<R: Resource + Serialize + DeserializeOwned> Persistent<R>

Source

pub fn name(&self) -> &str

Gets the name of the resource.

Source

pub fn format(&self) -> StorageFormat

Gets the storage format of the resource.

Source

pub fn storage(&self) -> &Storage

Gets the storage of the resource.

Source

pub fn is_revertible(&self) -> bool

Gets if the resource is revertible.

Source

pub fn is_loaded(&self) -> bool

Gets if the resource is loaded.

Source

pub fn is_unloaded(&self) -> bool

Gets if the resource is unloaded.

Source

pub fn get(&self) -> &R

Gets the resource.

§Panics

Panics if the resource is unloaded.

Source

pub fn get_mut(&mut self) -> &mut R

Gets the resource mutably.

§Panics

Panics if the resource is unloaded.

Source

pub fn try_get(&self) -> Option<&R>

Tries to get the resource.

Source

pub fn try_get_mut(&mut self) -> Option<&mut R>

Tries to get the resource mutably.

Source§

impl<R: Resource + Serialize + DeserializeOwned> Persistent<R>

Source

pub fn set(&mut self, new_resource: R) -> Result<(), PersistenceError>

Sets the resource.

Changes are synchronized with the underlying storage immediately.

Source

pub fn update( &mut self, updater: impl Fn(&mut R), ) -> Result<(), PersistenceError>

Updates the resource.

Changes are synchronized with the underlying storage immediately.

§Panics

Panics if the resource is unloaded.

Source

pub fn unload(&mut self) -> Result<(), PersistenceError>

Unloads the resource from memory.

Changes are synchronized with the underlying storage before unloading.

§Panics

Panics if the resource is unloaded.

Source

pub fn unload_without_persisting(&mut self)

Unloads the resource from memory immediately.

Changes are not synchronized with the underlying storage before unloading.

Source

pub fn reload(&mut self) -> Result<(), PersistenceError>

Reloads the resource from the underlying storage.

If reloading fails, the underlying resource is kept untouched.

Source

pub fn revert_to_default(&mut self) -> Result<(), PersistenceError>

Reverts the resource to it’s default value.

Loaded status is kept upon reloading.

§Panics

Panics if the resource is not revertible.

Source

pub fn revert_to_default_in_memory(&mut self) -> Result<(), PersistenceError>

Reverts the resource to it’s default value only in memory, not persistent storage.

§Panics

Panics if the resource is not revertible.

Source§

impl<R: Resource + Serialize + DeserializeOwned> Persistent<R>

Source

pub fn persist(&self) -> Result<(), PersistenceError>

Writes the resource to the underlying storage.

§Panics

Panics if the resource is unloaded.

Trait Implementations§

Source§

impl<R: Resource + Serialize + DeserializeOwned> Component for Persistent<R>
where Self: Send + Sync + 'static,

Source§

const STORAGE_TYPE: StorageType = bevy::ecs::component::StorageType::Table

A constant indicating the storage type used for this component.
Source§

type Mutability = Mutable

A marker type to assist Bevy with determining if this component is mutable, or immutable. Mutable components will have [Component<Mutability = Mutable>], while immutable components will instead have [Component<Mutability = Immutable>]. Read more
Source§

fn register_required_components( requiree: ComponentId, components: &mut ComponentsRegistrator<'_>, required_components: &mut RequiredComponents, inheritance_depth: u16, recursion_check_stack: &mut Vec<ComponentId>, )

Registers required components.
Source§

fn clone_behavior() -> ComponentCloneBehavior

Called when registering this component, allowing to override clone function (or disable cloning altogether) for this component. Read more
Source§

fn register_component_hooks(hooks: &mut ComponentHooks)

👎Deprecated since 0.16.0: Use the individual hook methods instead (e.g., Component::on_add, etc.)
Called when registering this component, allowing mutable access to its ComponentHooks.
Source§

fn on_add() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_add ComponentHook for this Component if one is defined.
Source§

fn on_insert() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_insert ComponentHook for this Component if one is defined.
Source§

fn on_replace() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_replace ComponentHook for this Component if one is defined.
Source§

fn on_remove() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_remove ComponentHook for this Component if one is defined.
Source§

fn on_despawn() -> Option<for<'w> fn(DeferredWorld<'w>, HookContext)>

Gets the on_despawn ComponentHook for this Component if one is defined.
Source§

fn map_entities<E>(_this: &mut Self, _mapper: &mut E)
where E: EntityMapper,

Maps the entities on this component using the given EntityMapper. This is used to remap entities in contexts like scenes and entity cloning. When deriving Component, this is populated by annotating fields containing entities with #[entities] Read more
Source§

impl<R: Debug + Resource + Serialize + DeserializeOwned> Debug for Persistent<R>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<R: Resource + Serialize + DeserializeOwned> Deref for Persistent<R>

Source§

type Target = R

The resulting type after dereferencing.
Source§

fn deref(&self) -> &R

Dereferences the value.
Source§

impl<R: Resource + Serialize + DeserializeOwned> DerefMut for Persistent<R>

Source§

fn deref_mut(&mut self) -> &mut R

Mutably dereferences the value.
Source§

impl<R: Resource + Serialize + DeserializeOwned> Resource for Persistent<R>
where Self: Send + Sync + 'static,

Auto Trait Implementations§

§

impl<R> Freeze for Persistent<R>
where R: Freeze,

§

impl<R> RefUnwindSafe for Persistent<R>
where R: RefUnwindSafe,

§

impl<R> Send for Persistent<R>

§

impl<R> Sync for Persistent<R>

§

impl<R> Unpin for Persistent<R>
where R: Unpin,

§

impl<R> UnwindSafe for Persistent<R>
where R: 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> 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<C> Bundle for C
where C: Component,

Source§

fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )

Source§

fn register_required_components( components: &mut ComponentsRegistrator<'_>, required_components: &mut RequiredComponents, )

Registers components that are required by the components in this Bundle.
Source§

fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )

Gets this Bundle’s component ids. This will be None if the component has not been registered.
Source§

impl<C> BundleFromComponents for C
where C: Component,

Source§

unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
where F: for<'a> FnMut(&'a mut T) -> OwningPtr<'a>,

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<C> DynamicBundle for C
where C: Component,

Source§

type Effect = ()

An operation on the entity that happens after inserting this bundle.
Source§

fn get_components( self, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect

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