Remove thiserror from bevy_ecs (#15774)

# Objective

- Contributes to #15460

## Solution

- Removed `thiserror` from `bevy_ecs`
This commit is contained in:
Zachary Harrold 2024-10-10 01:20:58 +11:00 committed by GitHub
parent 4c76ea7a5a
commit 0a61f04d9b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 94 additions and 90 deletions

View File

@ -32,7 +32,13 @@ concurrent-queue = "2.4.0"
disqualified = "1.0" disqualified = "1.0"
fixedbitset = "0.5" fixedbitset = "0.5"
serde = { version = "1", optional = true, default-features = false } serde = { version = "1", optional = true, default-features = false }
thiserror = "1.0" derive_more = { version = "1", default-features = false, features = [
"error",
"from",
"display",
"into",
"as_ref",
] }
nonmax = "0.5" nonmax = "0.5"
arrayvec = { version = "0.7.4", optional = true } arrayvec = { version = "0.7.4", optional = true }
smallvec = "1" smallvec = "1"

View File

@ -27,7 +27,7 @@ use core::{
marker::PhantomData, marker::PhantomData,
mem::needs_drop, mem::needs_drop,
}; };
use thiserror::Error; use derive_more::derive::{Display, Error};
/// A data type that can be used to store data for an [entity]. /// A data type that can be used to store data for an [entity].
/// ///
@ -1623,14 +1623,18 @@ impl<T: Component> FromWorld for InitComponentId<T> {
} }
/// An error returned when the registration of a required component fails. /// An error returned when the registration of a required component fails.
#[derive(Error, Debug)] #[derive(Error, Display, Debug)]
#[non_exhaustive] #[non_exhaustive]
pub enum RequiredComponentsError { pub enum RequiredComponentsError {
/// The component is already a directly required component for the requiree. /// The component is already a directly required component for the requiree.
#[error("Component {0:?} already directly requires component {1:?}")] #[display("Component {0:?} already directly requires component {_1:?}")]
#[error(ignore)]
DuplicateRegistration(ComponentId, ComponentId), DuplicateRegistration(ComponentId, ComponentId),
/// An archetype with the component that requires other components already exists /// An archetype with the component that requires other components already exists
#[error("An archetype with the component {0:?} that requires other components already exists")] #[display(
"An archetype with the component {_0:?} that requires other components already exists"
)]
#[error(ignore)]
ArchetypeExists(ComponentId), ArchetypeExists(ComponentId),
} }

View File

@ -2,6 +2,7 @@ use crate::component::ComponentId;
use crate::storage::SparseSetIndex; use crate::storage::SparseSetIndex;
use crate::world::World; use crate::world::World;
use core::{fmt, fmt::Debug, marker::PhantomData}; use core::{fmt, fmt::Debug, marker::PhantomData};
use derive_more::derive::From;
use fixedbitset::FixedBitSet; use fixedbitset::FixedBitSet;
/// A wrapper struct to make Debug representations of [`FixedBitSet`] easier /// A wrapper struct to make Debug representations of [`FixedBitSet`] easier
@ -856,7 +857,7 @@ impl<T: SparseSetIndex> From<FilteredAccess<T>> for FilteredAccessSet<T> {
} }
/// Records how two accesses conflict with each other /// Records how two accesses conflict with each other
#[derive(Debug, PartialEq)] #[derive(Debug, PartialEq, From)]
pub enum AccessConflicts { pub enum AccessConflicts {
/// Conflict is for all indices /// Conflict is for all indices
All, All,
@ -908,12 +909,6 @@ impl AccessConflicts {
} }
} }
impl From<FixedBitSet> for AccessConflicts {
fn from(value: FixedBitSet) -> Self {
Self::Individual(value)
}
}
impl<T: SparseSetIndex> From<Vec<T>> for AccessConflicts { impl<T: SparseSetIndex> From<Vec<T>> for AccessConflicts {
fn from(value: Vec<T>) -> Self { fn from(value: Vec<T>) -> Self {
Self::Individual(value.iter().map(T::sparse_set_index).collect()) Self::Individual(value.iter().map(T::sparse_set_index).collect())

View File

@ -1,4 +1,4 @@
use thiserror::Error; use derive_more::derive::{Display, Error};
use crate::{entity::Entity, world::unsafe_world_cell::UnsafeWorldCell}; use crate::{entity::Entity, world::unsafe_world_cell::UnsafeWorldCell};
@ -90,13 +90,15 @@ impl<'w> Eq for QueryEntityError<'w> {}
/// An error that occurs when evaluating a [`Query`](crate::system::Query) or [`QueryState`](crate::query::QueryState) as a single expected result via /// An error that occurs when evaluating a [`Query`](crate::system::Query) or [`QueryState`](crate::query::QueryState) as a single expected result via
/// [`get_single`](crate::system::Query::get_single) or [`get_single_mut`](crate::system::Query::get_single_mut). /// [`get_single`](crate::system::Query::get_single) or [`get_single_mut`](crate::system::Query::get_single_mut).
#[derive(Debug, Error)] #[derive(Debug, Error, Display)]
pub enum QuerySingleError { pub enum QuerySingleError {
/// No entity fits the query. /// No entity fits the query.
#[error("No entities fit the query {0}")] #[display("No entities fit the query {_0}")]
#[error(ignore)]
NoEntities(&'static str), NoEntities(&'static str),
/// Multiple entities fit the query. /// Multiple entities fit the query.
#[error("Multiple entities fit the query {0}")] #[display("Multiple entities fit the query {_0}")]
#[error(ignore)]
MultipleEntities(&'static str), MultipleEntities(&'static str),
} }

View File

@ -11,6 +11,8 @@ use crate::{
world::{unsafe_world_cell::UnsafeWorldCell, World}, world::{unsafe_world_cell::UnsafeWorldCell, World},
}; };
use derive_more::derive::Into;
use core::{ use core::{
fmt::Debug, fmt::Debug,
iter, iter,
@ -21,15 +23,9 @@ use core::{
/// Wrapper around [`Entity`] for [`RemovedComponents`]. /// Wrapper around [`Entity`] for [`RemovedComponents`].
/// Internally, `RemovedComponents` uses these as an `Events<RemovedComponentEntity>`. /// Internally, `RemovedComponents` uses these as an `Events<RemovedComponentEntity>`.
#[derive(Event, Debug, Clone)] #[derive(Event, Debug, Clone, Into)]
pub struct RemovedComponentEntity(Entity); pub struct RemovedComponentEntity(Entity);
impl From<RemovedComponentEntity> for Entity {
fn from(value: RemovedComponentEntity) -> Self {
value.0
}
}
/// Wrapper around a [`EventCursor<RemovedComponentEntity>`] so that we /// Wrapper around a [`EventCursor<RemovedComponentEntity>`] so that we
/// can differentiate events between components. /// can differentiate events between components.
#[derive(Debug)] #[derive(Debug)]

View File

@ -8,10 +8,10 @@ use bevy_utils::{
tracing::{error, info, warn}, tracing::{error, info, warn},
HashMap, HashSet, HashMap, HashSet,
}; };
use derive_more::derive::{Display, Error};
use disqualified::ShortName; use disqualified::ShortName;
use fixedbitset::FixedBitSet; use fixedbitset::FixedBitSet;
use petgraph::{algo::TarjanScc, prelude::*}; use petgraph::{algo::TarjanScc, prelude::*};
use thiserror::Error;
use crate::{ use crate::{
self as bevy_ecs, self as bevy_ecs,
@ -1934,42 +1934,43 @@ impl ScheduleGraph {
} }
/// Category of errors encountered during schedule construction. /// Category of errors encountered during schedule construction.
#[derive(Error, Debug)] #[derive(Error, Display, Debug)]
#[error(ignore)]
#[non_exhaustive] #[non_exhaustive]
pub enum ScheduleBuildError { pub enum ScheduleBuildError {
/// A system set contains itself. /// A system set contains itself.
#[error("System set `{0}` contains itself.")] #[display("System set `{_0}` contains itself.")]
HierarchyLoop(String), HierarchyLoop(String),
/// The hierarchy of system sets contains a cycle. /// The hierarchy of system sets contains a cycle.
#[error("System set hierarchy contains cycle(s).\n{0}")] #[display("System set hierarchy contains cycle(s).\n{_0}")]
HierarchyCycle(String), HierarchyCycle(String),
/// The hierarchy of system sets contains redundant edges. /// The hierarchy of system sets contains redundant edges.
/// ///
/// This error is disabled by default, but can be opted-in using [`ScheduleBuildSettings`]. /// This error is disabled by default, but can be opted-in using [`ScheduleBuildSettings`].
#[error("System set hierarchy contains redundant edges.\n{0}")] #[display("System set hierarchy contains redundant edges.\n{_0}")]
HierarchyRedundancy(String), HierarchyRedundancy(String),
/// A system (set) has been told to run before itself. /// A system (set) has been told to run before itself.
#[error("System set `{0}` depends on itself.")] #[display("System set `{_0}` depends on itself.")]
DependencyLoop(String), DependencyLoop(String),
/// The dependency graph contains a cycle. /// The dependency graph contains a cycle.
#[error("System dependencies contain cycle(s).\n{0}")] #[display("System dependencies contain cycle(s).\n{_0}")]
DependencyCycle(String), DependencyCycle(String),
/// Tried to order a system (set) relative to a system set it belongs to. /// Tried to order a system (set) relative to a system set it belongs to.
#[error("`{0}` and `{1}` have both `in_set` and `before`-`after` relationships (these might be transitive). This combination is unsolvable as a system cannot run before or after a set it belongs to.")] #[display("`{0}` and `{_1}` have both `in_set` and `before`-`after` relationships (these might be transitive). This combination is unsolvable as a system cannot run before or after a set it belongs to.")]
CrossDependency(String, String), CrossDependency(String, String),
/// Tried to order system sets that share systems. /// Tried to order system sets that share systems.
#[error("`{0}` and `{1}` have a `before`-`after` relationship (which may be transitive) but share systems.")] #[display("`{0}` and `{_1}` have a `before`-`after` relationship (which may be transitive) but share systems.")]
SetsHaveOrderButIntersect(String, String), SetsHaveOrderButIntersect(String, String),
/// Tried to order a system (set) relative to all instances of some system function. /// Tried to order a system (set) relative to all instances of some system function.
#[error("Tried to order against `{0}` in a schedule that has more than one `{0}` instance. `{0}` is a `SystemTypeSet` and cannot be used for ordering if ambiguous. Use a different set without this restriction.")] #[display("Tried to order against `{0}` in a schedule that has more than one `{0}` instance. `{_0}` is a `SystemTypeSet` and cannot be used for ordering if ambiguous. Use a different set without this restriction.")]
SystemTypeSetAmbiguity(String), SystemTypeSetAmbiguity(String),
/// Systems with conflicting access have indeterminate run order. /// Systems with conflicting access have indeterminate run order.
/// ///
/// This error is disabled by default, but can be opted-in using [`ScheduleBuildSettings`]. /// This error is disabled by default, but can be opted-in using [`ScheduleBuildSettings`].
#[error("Systems with conflicting access have indeterminate run order.\n{0}")] #[display("Systems with conflicting access have indeterminate run order.\n{_0}")]
Ambiguity(String), Ambiguity(String),
/// Tried to run a schedule before all of its systems have been initialized. /// Tried to run a schedule before all of its systems have been initialized.
#[error("Systems in schedule have not been initialized.")] #[display("Systems in schedule have not been initialized.")]
Uninitialized, Uninitialized,
} }
@ -2040,8 +2041,8 @@ impl ScheduleBuildSettings {
/// Error to denote that [`Schedule::initialize`] or [`Schedule::run`] has not yet been called for /// Error to denote that [`Schedule::initialize`] or [`Schedule::run`] has not yet been called for
/// this schedule. /// this schedule.
#[derive(Error, Debug)] #[derive(Error, Display, Debug)]
#[error("executable schedule has not been built")] #[display("executable schedule has not been built")]
pub struct ScheduleNotInitialized; pub struct ScheduleNotInitialized;
#[cfg(test)] #[cfg(test)]

View File

@ -7,10 +7,13 @@ use crate::{
system::{IntoSystem, ResMut, Resource}, system::{IntoSystem, ResMut, Resource},
}; };
use bevy_utils::{ use bevy_utils::{
tracing::{error, info, warn}, tracing::{info, warn},
TypeIdMap, TypeIdMap,
}; };
use thiserror::Error; use derive_more::derive::{Display, Error};
#[cfg(not(feature = "bevy_debug_stepping"))]
use bevy_utils::tracing::error;
#[cfg(test)] #[cfg(test)]
use bevy_utils::tracing::debug; use bevy_utils::tracing::debug;
@ -87,8 +90,8 @@ enum Update {
ClearBehavior(InternedScheduleLabel, SystemIdentifier), ClearBehavior(InternedScheduleLabel, SystemIdentifier),
} }
#[derive(Error, Debug)] #[derive(Error, Display, Debug)]
#[error("not available until all configured schedules have been run; try again next frame")] #[display("not available until all configured schedules have been run; try again next frame")]
pub struct NotReady; pub struct NotReady;
#[derive(Resource, Default)] #[derive(Resource, Default)]

View File

@ -1,6 +1,6 @@
use bevy_utils::tracing::warn; use bevy_utils::tracing::warn;
use core::fmt::Debug; use core::fmt::Debug;
use thiserror::Error; use derive_more::derive::{Display, Error};
use crate::{ use crate::{
archetype::ArchetypeComponentId, archetype::ArchetypeComponentId,
@ -357,12 +357,13 @@ impl RunSystemOnce for &mut World {
} }
/// Running system failed. /// Running system failed.
#[derive(Error)] #[derive(Error, Display)]
pub enum RunSystemError { pub enum RunSystemError {
/// System could not be run due to parameters that failed validation. /// System could not be run due to parameters that failed validation.
/// ///
/// This can occur because the data required by the system was not present in the world. /// This can occur because the data required by the system was not present in the world.
#[error("The data required by the system {0:?} was not found in the world and the system did not run due to failed parameter validation.")] #[display("The data required by the system {_0:?} was not found in the world and the system did not run due to failed parameter validation.")]
#[error(ignore)]
InvalidParams(Cow<'static, str>), InvalidParams(Cow<'static, str>),
} }

View File

@ -6,6 +6,7 @@ use crate::{
}; };
use alloc::borrow::Cow; use alloc::borrow::Cow;
use core::ops::Deref; use core::ops::Deref;
use derive_more::derive::{AsRef, Display, Into};
/// [`SystemParam`] that returns the name of the system which it is used in. /// [`SystemParam`] that returns the name of the system which it is used in.
/// ///
@ -33,7 +34,8 @@ use core::ops::Deref;
/// logger.log("Hello"); /// logger.log("Hello");
/// } /// }
/// ``` /// ```
#[derive(Debug)] #[derive(Debug, Into, Display, AsRef)]
#[as_ref(str)]
pub struct SystemName<'s>(&'s str); pub struct SystemName<'s>(&'s str);
impl<'s> SystemName<'s> { impl<'s> SystemName<'s> {
@ -50,25 +52,6 @@ impl<'s> Deref for SystemName<'s> {
} }
} }
impl<'s> AsRef<str> for SystemName<'s> {
fn as_ref(&self) -> &str {
self.name()
}
}
impl<'s> From<SystemName<'s>> for &'s str {
fn from(name: SystemName<'s>) -> &'s str {
name.0
}
}
impl<'s> core::fmt::Display for SystemName<'s> {
#[inline(always)]
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
core::fmt::Display::fmt(&self.name(), f)
}
}
// SAFETY: no component value access // SAFETY: no component value access
unsafe impl SystemParam for SystemName<'_> { unsafe impl SystemParam for SystemName<'_> {
type State = Cow<'static, str>; type State = Cow<'static, str>;

View File

@ -12,7 +12,7 @@ use bevy_ecs_macros::{Component, Resource};
#[cfg(feature = "bevy_reflect")] #[cfg(feature = "bevy_reflect")]
use bevy_reflect::Reflect; use bevy_reflect::Reflect;
use core::marker::PhantomData; use core::marker::PhantomData;
use thiserror::Error; use derive_more::derive::{Display, Error};
/// A small wrapper for [`BoxedSystem`] that also keeps track whether or not the system has been initialized. /// A small wrapper for [`BoxedSystem`] that also keeps track whether or not the system has been initialized.
#[derive(Component)] #[derive(Component)]
@ -587,28 +587,28 @@ where
} }
/// An operation with stored systems failed. /// An operation with stored systems failed.
#[derive(Error)] #[derive(Error, Display)]
pub enum RegisteredSystemError<I: SystemInput = (), O = ()> { pub enum RegisteredSystemError<I: SystemInput = (), O = ()> {
/// A system was run by id, but no system with that id was found. /// A system was run by id, but no system with that id was found.
/// ///
/// Did you forget to register it? /// Did you forget to register it?
#[error("System {0:?} was not registered")] #[display("System {_0:?} was not registered")]
SystemIdNotRegistered(SystemId<I, O>), SystemIdNotRegistered(SystemId<I, O>),
/// A cached system was removed by value, but no system with its type was found. /// A cached system was removed by value, but no system with its type was found.
/// ///
/// Did you forget to register it? /// Did you forget to register it?
#[error("Cached system was not found")] #[display("Cached system was not found")]
SystemNotCached, SystemNotCached,
/// A system tried to run itself recursively. /// A system tried to run itself recursively.
#[error("System {0:?} tried to run itself recursively")] #[display("System {_0:?} tried to run itself recursively")]
Recursive(SystemId<I, O>), Recursive(SystemId<I, O>),
/// A system tried to remove itself. /// A system tried to remove itself.
#[error("System {0:?} tried to remove itself")] #[display("System {_0:?} tried to remove itself")]
SelfRemove(SystemId<I, O>), SelfRemove(SystemId<I, O>),
/// System could not be run due to parameters that failed validation. /// System could not be run due to parameters that failed validation.
/// ///
/// This can occur because the data required by the system was not present in the world. /// This can occur because the data required by the system was not present in the world.
#[error("The data required by the system {0:?} was not found in the world and the system did not run due to failed parameter validation.")] #[display("The data required by the system {_0:?} was not found in the world and the system did not run due to failed parameter validation.")]
InvalidParams(SystemId<I, O>), InvalidParams(SystemId<I, O>),
} }

View File

@ -15,7 +15,7 @@ use crate::{
use bevy_ptr::{OwningPtr, Ptr}; use bevy_ptr::{OwningPtr, Ptr};
use bevy_utils::{HashMap, HashSet}; use bevy_utils::{HashMap, HashSet};
use core::{any::TypeId, marker::PhantomData, mem::MaybeUninit}; use core::{any::TypeId, marker::PhantomData, mem::MaybeUninit};
use thiserror::Error; use derive_more::derive::{Display, Error};
use super::{unsafe_world_cell::UnsafeEntityCell, Ref, ON_REMOVE, ON_REPLACE}; use super::{unsafe_world_cell::UnsafeEntityCell, Ref, ON_REMOVE, ON_REPLACE};
@ -2774,12 +2774,16 @@ impl<'a> From<&'a mut EntityWorldMut<'_>> for FilteredEntityMut<'a> {
} }
} }
#[derive(Error, Debug)] #[derive(Error, Display, Debug)]
pub enum TryFromFilteredError { pub enum TryFromFilteredError {
#[error("Conversion failed, filtered entity ref does not have read access to all components")] #[display(
"Conversion failed, filtered entity ref does not have read access to all components"
)]
MissingReadAllAccess, MissingReadAllAccess,
#[error("Conversion failed, filtered entity ref does not have write access to all components")] #[display(
"Conversion failed, filtered entity ref does not have write access to all components"
)]
MissingWriteAllAccess, MissingWriteAllAccess,
} }

View File

@ -1,34 +1,39 @@
//! Contains error types returned by bevy's schedule. //! Contains error types returned by bevy's schedule.
use thiserror::Error; use derive_more::derive::{Display, Error};
use crate::{component::ComponentId, entity::Entity, schedule::InternedScheduleLabel}; use crate::{component::ComponentId, entity::Entity, schedule::InternedScheduleLabel};
/// The error type returned by [`World::try_run_schedule`] if the provided schedule does not exist. /// The error type returned by [`World::try_run_schedule`] if the provided schedule does not exist.
/// ///
/// [`World::try_run_schedule`]: crate::world::World::try_run_schedule /// [`World::try_run_schedule`]: crate::world::World::try_run_schedule
#[derive(Error, Debug)] #[derive(Error, Display, Debug)]
#[error("The schedule with the label {0:?} was not found.")] #[display("The schedule with the label {_0:?} was not found.")]
#[error(ignore)]
pub struct TryRunScheduleError(pub InternedScheduleLabel); pub struct TryRunScheduleError(pub InternedScheduleLabel);
/// An error that occurs when dynamically retrieving components from an entity. /// An error that occurs when dynamically retrieving components from an entity.
#[derive(Error, Debug, Clone, Copy, PartialEq, Eq)] #[derive(Error, Display, Debug, Clone, Copy, PartialEq, Eq)]
pub enum EntityComponentError { pub enum EntityComponentError {
/// The component with the given [`ComponentId`] does not exist on the entity. /// The component with the given [`ComponentId`] does not exist on the entity.
#[error("The component with ID {0:?} does not exist on the entity.")] #[display("The component with ID {_0:?} does not exist on the entity.")]
#[error(ignore)]
MissingComponent(ComponentId), MissingComponent(ComponentId),
/// The component with the given [`ComponentId`] was requested mutably more than once. /// The component with the given [`ComponentId`] was requested mutably more than once.
#[error("The component with ID {0:?} was requested mutably more than once.")] #[display("The component with ID {_0:?} was requested mutably more than once.")]
#[error(ignore)]
AliasedMutability(ComponentId), AliasedMutability(ComponentId),
} }
/// An error that occurs when fetching entities mutably from a world. /// An error that occurs when fetching entities mutably from a world.
#[derive(Error, Debug, Clone, Copy, PartialEq, Eq)] #[derive(Error, Display, Debug, Clone, Copy, PartialEq, Eq)]
pub enum EntityFetchError { pub enum EntityFetchError {
/// The entity with the given ID does not exist. /// The entity with the given ID does not exist.
#[error("The entity with ID {0:?} does not exist.")] #[display("The entity with ID {_0:?} does not exist.")]
#[error(ignore)]
NoSuchEntity(Entity), NoSuchEntity(Entity),
/// The entity with the given ID was requested mutably more than once. /// The entity with the given ID was requested mutably more than once.
#[error("The entity with ID {0:?} was requested mutably more than once.")] #[display("The entity with ID {_0:?} was requested mutably more than once.")]
#[error(ignore)]
AliasedMutability(Entity), AliasedMutability(Entity),
} }

View File

@ -2,7 +2,7 @@
use core::any::TypeId; use core::any::TypeId;
use thiserror::Error; use derive_more::derive::{Display, Error};
use bevy_reflect::{Reflect, ReflectFromPtr}; use bevy_reflect::{Reflect, ReflectFromPtr};
@ -198,7 +198,7 @@ impl World {
} }
/// The error type returned by [`World::get_reflect`] and [`World::get_reflect_mut`]. /// The error type returned by [`World::get_reflect`] and [`World::get_reflect_mut`].
#[derive(Error, Debug)] #[derive(Error, Display, Debug)]
pub enum GetComponentReflectError { pub enum GetComponentReflectError {
/// There is no [`ComponentId`] corresponding to the given [`TypeId`]. /// There is no [`ComponentId`] corresponding to the given [`TypeId`].
/// ///
@ -208,11 +208,14 @@ pub enum GetComponentReflectError {
/// See the documentation for [`bevy_reflect`] for more information. /// See the documentation for [`bevy_reflect`] for more information.
/// ///
/// [`App::register_type`]: ../../../bevy_app/struct.App.html#method.register_type /// [`App::register_type`]: ../../../bevy_app/struct.App.html#method.register_type
#[error("No `ComponentId` corresponding to {0:?} found (did you call App::register_type()?)")] #[display(
"No `ComponentId` corresponding to {_0:?} found (did you call App::register_type()?)"
)]
#[error(ignore)]
NoCorrespondingComponentId(TypeId), NoCorrespondingComponentId(TypeId),
/// The given [`Entity`] does not have a [`Component`] corresponding to the given [`TypeId`]. /// The given [`Entity`] does not have a [`Component`] corresponding to the given [`TypeId`].
#[error("The given `Entity` {entity:?} does not have a `{component_name:?}` component ({component_id:?}, which corresponds to {type_id:?})")] #[display("The given `Entity` {entity:?} does not have a `{component_name:?}` component ({component_id:?}, which corresponds to {type_id:?})")]
EntityDoesNotHaveComponent { EntityDoesNotHaveComponent {
/// The given [`Entity`]. /// The given [`Entity`].
entity: Entity, entity: Entity,
@ -226,7 +229,7 @@ pub enum GetComponentReflectError {
}, },
/// The [`World`] was missing the [`AppTypeRegistry`] resource. /// The [`World`] was missing the [`AppTypeRegistry`] resource.
#[error("The `World` was missing the `AppTypeRegistry` resource")] #[display("The `World` was missing the `AppTypeRegistry` resource")]
MissingAppTypeRegistry, MissingAppTypeRegistry,
/// The [`World`]'s [`TypeRegistry`] did not contain [`TypeData`] for [`ReflectFromPtr`] for the given [`TypeId`]. /// The [`World`]'s [`TypeRegistry`] did not contain [`TypeData`] for [`ReflectFromPtr`] for the given [`TypeId`].
@ -240,7 +243,8 @@ pub enum GetComponentReflectError {
/// [`TypeRegistry`]: bevy_reflect::TypeRegistry /// [`TypeRegistry`]: bevy_reflect::TypeRegistry
/// [`ReflectFromPtr`]: bevy_reflect::ReflectFromPtr /// [`ReflectFromPtr`]: bevy_reflect::ReflectFromPtr
/// [`App::register_type`]: ../../../bevy_app/struct.App.html#method.register_type /// [`App::register_type`]: ../../../bevy_app/struct.App.html#method.register_type
#[error("The `World`'s `TypeRegistry` did not contain `TypeData` for `ReflectFromPtr` for the given {0:?} (did you call `App::register_type()`?)")] #[display("The `World`'s `TypeRegistry` did not contain `TypeData` for `ReflectFromPtr` for the given {_0:?} (did you call `App::register_type()`?)")]
#[error(ignore)]
MissingReflectFromPtrTypeData(TypeId), MissingReflectFromPtrTypeData(TypeId),
} }