use crate::{GetTypeRegistration, Reflect, TypePath, Typed};12/// A catch-all trait that is bound by the core reflection traits,3/// useful to simplify reflection-based generic type bounds.4///5/// You do _not_ need to implement this trait manually.6/// It is automatically implemented for all types that implement its supertraits.7/// And these supertraits are all automatically derived with the [`Reflect` derive macro].8///9/// This should namely be used to bound generic arguments to the necessary traits for reflection.10/// Doing this has the added benefit of reducing migration costs, as a change to the required traits11/// is automatically handled by this trait.12///13/// For now, the supertraits of this trait includes:14/// * [`Reflect`]15/// * [`GetTypeRegistration`]16/// * [`Typed`]17/// * [`TypePath`]18///19/// ## Example20///21/// ```22/// # use bevy_reflect::{Reflect, Reflectable};23/// #[derive(Reflect)]24/// struct MyStruct<T: Reflectable> {25/// value: T26/// }27/// ```28///29/// [`Reflect` derive macro]: bevy_reflect_derive::Reflect30pub trait Reflectable: Reflect + GetTypeRegistration + Typed + TypePath {}3132impl<T: Reflect + GetTypeRegistration + Typed + TypePath> Reflectable for T {}333435