bevyengine/bevy · error · ReflectCloneError

`PartialReflect::reflect_clone` not implemented for `{type_p

Error message

`PartialReflect::reflect_clone` not implemented for `{type_path}`

What it means

ReflectCloneError::NotImplemented — reflect_clone was called on a type whose TypeRegistration has no custom ReflectClone/reflect_clone implementation (e.g. a type not deriving Reflect with clone support registered). Register a clone handler or derive the appropriate support for the named type_path.

Source

Thrown at crates/bevy_reflect/src/error.rs:13

use crate::FieldId;
use alloc::{borrow::Cow, format};
use thiserror::Error;

/// An error that occurs when cloning a type via [`PartialReflect::reflect_clone`].
///
/// [`PartialReflect::reflect_clone`]: crate::PartialReflect::reflect_clone
#[derive(Clone, Debug, Error, PartialEq, Eq)]
pub enum ReflectCloneError {
    /// The type does not have a custom implementation for [`PartialReflect::reflect_clone`].
    ///
    /// [`PartialReflect::reflect_clone`]: crate::PartialReflect::reflect_clone
    #[error("`PartialReflect::reflect_clone` not implemented for `{type_path}`")]
    NotImplemented {
        /// The fully qualified path of the type that [`PartialReflect::reflect_clone`](crate::PartialReflect::reflect_clone) is not implemented for.
        type_path: Cow<'static, str>,
    },
    /// The type cannot be cloned via [`PartialReflect::reflect_clone`].
    ///
    /// 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.

View on GitHub (pinned to 396ca72708)

Solutions

  1. Derive Reflect on the type so reflect_clone is generated
  2. Implement PartialReflect::reflect_clone manually for the type
  3. Clone via the concrete type instead of reflection where possible
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/bevy_reflect/src/error.rs:13 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/2306ca24e4dfab54. Report an issue: GitHub.