#[non_exhaustive]pub enum RestoreError {
IdAlreadyLive(ItemId),
MissingParent {
id: ItemId,
parent: ItemId,
},
}Expand description
Why Scene::restore could not put a salvage back.
#[non_exhaustive]: this crate has out-of-tree consumers and the restore
path may learn to refuse something new.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
IdAlreadyLive(ItemId)
An entry with this id is already in the scene. Restoring over it would alias two items onto one identity.
Defensive. Scene::take retires the id, so a
second salvage for it cannot exist while the first is held, and the
restore that succeeds consumes the one that does — which makes this
unreachable through the public API today. It stays because it is the
only thing standing between a future door that breaks that invariant and
a corrupted entry_index, and refusing is better than aliasing.
MissingParent
The parent the item was removed from is not in the scene. Restore
roots-first — Scene::restore_all orders a
whole take result for you — or clear the recorded parent with
RemovedItem::detach before restoring, which is what a move into a
different scene normally wants.
The salvage is consumed by the refused call, so a caller that may hit
this checks parent() (or calls detach()) before handing it over.
Trait Implementations§
Source§impl Clone for RestoreError
impl Clone for RestoreError
Source§fn clone(&self) -> RestoreError
fn clone(&self) -> RestoreError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for RestoreError
Source§impl Debug for RestoreError
impl Debug for RestoreError
Source§impl Display for RestoreError
impl Display for RestoreError
impl Eq for RestoreError
Source§impl Error for RestoreError
impl Error for RestoreError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl PartialEq for RestoreError
impl PartialEq for RestoreError
impl StructuralPartialEq for RestoreError
Auto Trait Implementations§
impl Freeze for RestoreError
impl RefUnwindSafe for RestoreError
impl Send for RestoreError
impl Sync for RestoreError
impl Unpin for RestoreError
impl UnsafeUnpin for RestoreError
impl UnwindSafe for RestoreError
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.impl<T> ErasedDestructor for Twhere
T: 'static,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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