bevyengine/bevy · error · ReflectCloneError
field `{}` cannot be made cloneable for `PartialReflect::ref
Error message
field `{}` cannot be made cloneable for `PartialReflect::reflect_clone` (are you missing a `#[reflect(clone)]` attribute?) What it means
ReflectCloneError::FieldNotCloneable: during a derived reflect_clone, a specific struct field or enum variant field could not be cloned — usually because it is missing the #[reflect(clone)] attribute required for cloneable reflection.
Source
Thrown at crates/bevy_reflect/src/error.rs:37
///
/// This type should be returned when a type is intentionally opting out of reflection cloning.
///
/// [`PartialReflect::reflect_clone`]: crate::PartialReflect::reflect_clone
#[error("`{type_path}` cannot be made cloneable for `PartialReflect::reflect_clone`")]
NotCloneable {
/// The fully qualified path of the type that cannot be cloned via [`PartialReflect::reflect_clone`](crate::PartialReflect::reflect_clone).
type_path: Cow<'static, str>,
},
/// The field cannot be cloned via [`PartialReflect::reflect_clone`].
///
/// When [deriving `Reflect`], this usually means that a field marked with `#[reflect(ignore)]`
/// is missing a `#[reflect(clone)]` attribute.
///
/// This may be intentional if the field is not meant/able to be cloned.
///
/// [`PartialReflect::reflect_clone`]: crate::PartialReflect::reflect_clone
/// [deriving `Reflect`]: derive@crate::Reflect
#[error(
"field `{}` cannot be made cloneable for `PartialReflect::reflect_clone` (are you missing a `#[reflect(clone)]` attribute?)",
full_path(.field, .variant.as_deref(), .container_type_path)
)]
FieldNotCloneable {
/// Struct field or enum variant field which cannot be cloned.
field: FieldId,
/// Variant this field is part of if the container is an enum, otherwise [`None`].
variant: Option<Cow<'static, str>>,
/// Fully qualified path of the type containing this field.
container_type_path: Cow<'static, str>,
},
/// Could not downcast to the expected type.
///
/// Realistically this should only occur when a type has incorrectly implemented [`Reflect`].
///
/// [`Reflect`]: crate::Reflect
#[error("expected downcast to `{expected}`, but received `{received}`")]
FailedDowncast {View on GitHub (pinned to 396ca72708)
Solutions
- Add #[reflect(clone)] to the field named in the error
- Make the field's type Clone
- Use FromReflect-based cloning if full cloneability is not needed
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/bevy_reflect/src/error.rs:37 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of bevyengine/bevy@396ca72708 (2026-08-20).
Data as JSON: /api/errors/50c8d4b1e41dc13c.
Report an issue: GitHub.