bevyengine/bevy · error

expected owned value

Error message

expected owned value

What it means

Panic in Return::unwrap_owned: the Return holds a Ref or Mut rather than an Owned value, so unwrap_owned cannot take ownership. Match on the Return variant or use unwrap_ref/unwrap_mut as appropriate.

Source

Thrown at crates/bevy_reflect/src/func/return_type.rs:42

    }

    /// Returns `true` if the return value is an [`Owned`](Self::Owned) unit (`()`) type.
    pub fn is_unit(&self) -> bool {
        match self {
            Return::Owned(val) => val.represents::<()>(),
            _ => false,
        }
    }

    /// Unwraps the return value as an owned value.
    ///
    /// # Panics
    ///
    /// Panics if the return value is not [`Self::Owned`].
    pub fn unwrap_owned(self) -> Box<dyn PartialReflect> {
        match self {
            Return::Owned(value) => value,
            _ => panic!("expected owned value"),
        }
    }

    /// Unwraps the return value as a reference to a value.
    ///
    /// # Panics
    ///
    /// Panics if the return value is not [`Self::Ref`].
    pub fn unwrap_ref(self) -> &'a dyn PartialReflect {
        match self {
            Return::Ref(value) => value,
            _ => panic!("expected reference value"),
        }
    }

    /// Unwraps the return value as a mutable reference to a value.
    ///
    /// # Panics

View on GitHub (pinned to 396ca72708)

Solutions

  1. Check Return::is_owned() before unwrapping
  2. Use unwrap_ref/unwrap_mut as appropriate for the actual variant
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at crates/bevy_reflect/src/func/return_type.rs:42 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/bef130a75ca10e02. Report an issue: GitHub.