bevyengine/bevy · error

attempted to call `TypeRegistry::register_type_conversion` f

Error message

attempted to call `TypeRegistry::register_type_conversion` for type `{U}` without registering `{U}` first

What it means

Panic in TypeRegistry::register_type_conversion: the target type U of the conversion was not registered in the registry before calling this method. Register both T and U (e.g. registry.register::<U>()) before registering the conversion function.

Source

Thrown at crates/bevy_reflect/src/type_registry.rs:402

    /// the input value, wrapped in an `Err` variant.
    ///
    /// # Example
    /// ```
    /// # use bevy_reflect::TypeRegistry;
    ///
    /// let mut type_registry = TypeRegistry::default();
    /// type_registry.register::<i32>();
    /// type_registry.register::<String>();
    /// type_registry.register_type_conversion::<i32, String, _>(|n| Ok(n.to_string()));
    /// ```
    pub fn register_type_conversion<T, U, F>(&mut self, function: F)
    where
        T: Reflect + TypePath,
        U: Reflect + TypePath,
        F: Fn(T) -> Result<U, T> + Clone + Send + Sync + 'static,
    {
        let data = self.get_mut(TypeId::of::<U>()).unwrap_or_else(|| {
            panic!(
                "attempted to call `TypeRegistry::register_type_conversion` for type `{U}` without registering `{U}` first",
                U = U::type_path(),
            )
        });
        data.get_or_insert_data_with(ReflectConvert::default)
            .register_type_conversion(function);
    }

    /// Given types T and U, where `U: From<T>`, registers that conversion with
    /// the reflection system.
    ///
    /// # Example
    /// ```
    /// # use bevy_reflect::TypeRegistry;
    ///
    /// let mut type_registry = TypeRegistry::default();
    /// type_registry.register::<u8>();
    /// type_registry.register::<u32>();

View on GitHub (pinned to 396ca72708)

Solutions

  1. Call registry.register::<U>() before register_type_conversion
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/bevy_reflect/src/type_registry.rs:402 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/a2928998c4819a1d. Report an issue: GitHub.