Trait bevy_reflect::Typed

source ·
pub trait Typed: Reflect + TypePath {
    // Required method
    fn type_info() -> &'static TypeInfo;
}
Expand description

A static accessor to compile-time type information.

This trait is automatically implemented by the #[derive(Reflect)] macro and allows type information to be processed without an instance of that type.

Implementing

While it is recommended to leave implementing this trait to the #[derive(Reflect)] macro, it is possible to implement this trait manually. If a manual implementation is needed, you must ensure that the information you provide is correct, otherwise various systems that rely on this trait may fail in unexpected ways.

Implementors may have difficulty in generating a reference to TypeInfo with a static lifetime. Luckily, this crate comes with some utility structs, to make generating these statics much simpler.

Example

use bevy_reflect::Typed;

struct MyStruct {
  foo: usize,
  bar: (f32, f32)
}

impl Typed for MyStruct {
  fn type_info() -> &'static TypeInfo {
    static CELL: NonGenericTypeInfoCell = NonGenericTypeInfoCell::new();
    CELL.get_or_set(|| {
      let fields = [
        NamedField::new::<usize >("foo"),
        NamedField::new::<(f32, f32) >("bar"),
      ];
      let info = StructInfo::new::<Self>(&fields);
      TypeInfo::Struct(info)
    })
  }
}

Required Methods§

source

fn type_info() -> &'static TypeInfo

Returns the compile-time info for the underlying type.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Typed for &'static str

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for &'static Path

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for EulerRot
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Cow<'static, str>

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Cow<'static, Path>

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for bool
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for char
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for f32
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for f64
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for i8
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for i16
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for i32
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for i64
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for i128
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for isize
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for u8
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for u16
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for u32
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for u64
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for u128
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for ()

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for usize
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Capsule2d
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Circle
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Direction2d
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Ellipse
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Line2d

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Plane2d

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Rectangle
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for RegularPolygon

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Segment2d

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Triangle2d
where Self: Any + Send + Sync, [Vec2; 3]: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Capsule3d
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Cone
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for ConicalFrustum
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Cuboid
where Self: Any + Send + Sync, Vec3: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Cylinder
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Direction3d
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Line3d

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Plane3d

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Segment3d

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Sphere
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Torus
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for IRect
where Self: Any + Send + Sync, IVec2: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Rect
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for URect
where Self: Any + Send + Sync, UVec2: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for BVec2
where Self: Any + Send + Sync, bool: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for BVec3
where Self: Any + Send + Sync, bool: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for BVec4
where Self: Any + Send + Sync, bool: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for BVec3A
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for BVec4A
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Affine2

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Affine3A

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Mat3
where Self: Any + Send + Sync, Vec3: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Mat2
where Self: Any + Send + Sync, Vec2: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Mat3A
where Self: Any + Send + Sync, Vec3A: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Mat4
where Self: Any + Send + Sync, Vec4: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Quat
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Vec3A
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Vec4
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Vec2
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Vec3
where Self: Any + Send + Sync, f32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DAffine2

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DAffine3

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DMat2
where Self: Any + Send + Sync, DVec2: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DMat3
where Self: Any + Send + Sync, DVec3: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DMat4
where Self: Any + Send + Sync, DVec4: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DQuat
where Self: Any + Send + Sync, f64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DVec2
where Self: Any + Send + Sync, f64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DVec3
where Self: Any + Send + Sync, f64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for DVec4
where Self: Any + Send + Sync, f64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for IVec2
where Self: Any + Send + Sync, i32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for IVec3
where Self: Any + Send + Sync, i32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for IVec4
where Self: Any + Send + Sync, i32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for I64Vec2
where Self: Any + Send + Sync, i64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for I64Vec3
where Self: Any + Send + Sync, i64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for I64Vec4
where Self: Any + Send + Sync, i64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for UVec2
where Self: Any + Send + Sync, u32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for UVec3
where Self: Any + Send + Sync, u32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for UVec4
where Self: Any + Send + Sync, u32: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for U64Vec2
where Self: Any + Send + Sync, u64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for U64Vec3
where Self: Any + Send + Sync, u64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for U64Vec4
where Self: Any + Send + Sync, u64: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for SmolStr
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Uuid
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for String
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroI8
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroI16
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroI32
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroI64
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroI128
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroIsize
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroU8
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroU16
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroU32
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroU64
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroU128
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZeroUsize
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for RangeFull
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Duration
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for OsString
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for PathBuf
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for Instant
where Self: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath> Typed for (A,)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath> Typed for (A, B)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath> Typed for (A, B, C)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath> Typed for (A, B, C, D)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath, E: Reflect + TypePath> Typed for (A, B, C, D, E)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath, E: Reflect + TypePath, F: Reflect + TypePath> Typed for (A, B, C, D, E, F)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath, E: Reflect + TypePath, F: Reflect + TypePath, G: Reflect + TypePath> Typed for (A, B, C, D, E, F, G)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath, E: Reflect + TypePath, F: Reflect + TypePath, G: Reflect + TypePath, H: Reflect + TypePath> Typed for (A, B, C, D, E, F, G, H)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath, E: Reflect + TypePath, F: Reflect + TypePath, G: Reflect + TypePath, H: Reflect + TypePath, I: Reflect + TypePath> Typed for (A, B, C, D, E, F, G, H, I)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath, E: Reflect + TypePath, F: Reflect + TypePath, G: Reflect + TypePath, H: Reflect + TypePath, I: Reflect + TypePath, J: Reflect + TypePath> Typed for (A, B, C, D, E, F, G, H, I, J)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath, E: Reflect + TypePath, F: Reflect + TypePath, G: Reflect + TypePath, H: Reflect + TypePath, I: Reflect + TypePath, J: Reflect + TypePath, K: Reflect + TypePath> Typed for (A, B, C, D, E, F, G, H, I, J, K)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A: Reflect + TypePath, B: Reflect + TypePath, C: Reflect + TypePath, D: Reflect + TypePath, E: Reflect + TypePath, F: Reflect + TypePath, G: Reflect + TypePath, H: Reflect + TypePath, I: Reflect + TypePath, J: Reflect + TypePath, K: Reflect + TypePath, L: Reflect + TypePath> Typed for (A, B, C, D, E, F, G, H, I, J, K, L)

source§

fn type_info() -> &'static TypeInfo

source§

impl<K, V, S> Typed for HashMap<K, V, S>

source§

fn type_info() -> &'static TypeInfo

source§

impl<K, V, S> Typed for HashMap<K, V, S>

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for Arc<T>
where Self: Any + Send + Sync, T: TypePath + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for Saturating<T>
where Self: Any + Send + Sync, T: TypePath + Clone + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for Wrapping<T>
where Self: Any + Send + Sync, T: TypePath + Clone + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for Range<T>
where Self: Any + Send + Sync, T: TypePath + Clone + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for RangeFrom<T>
where Self: Any + Send + Sync, T: TypePath + Clone + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for RangeInclusive<T>
where Self: Any + Send + Sync, T: TypePath + Clone + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for RangeTo<T>
where Self: Any + Send + Sync, T: TypePath + Clone + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for RangeToInclusive<T>
where Self: Any + Send + Sync, T: TypePath + Clone + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T> Typed for HashSet<T>
where Self: Any + Send + Sync, T: TypePath + Hash + Eq + Clone + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T, E> Typed for Result<T, E>
where Self: Any + Send + Sync, T: TypePath + Clone + Reflect + TypePath, E: TypePath + Clone + Reflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl<T: Array + TypePath + Send + Sync + 'static> Typed for SmallVec<T>

source§

fn type_info() -> &'static TypeInfo

source§

impl<T: FromReflect + Clone + TypePath> Typed for Cow<'static, [T]>

source§

fn type_info() -> &'static TypeInfo

source§

impl<T: FromReflect + TypePath> Typed for Option<T>

source§

fn type_info() -> &'static TypeInfo

source§

impl<T: FromReflect + TypePath> Typed for VecDeque<T>

source§

fn type_info() -> &'static TypeInfo

source§

impl<T: FromReflect + TypePath> Typed for Vec<T>

source§

fn type_info() -> &'static TypeInfo

source§

impl<T: Reflect + TypePath, const N: usize> Typed for [T; N]

source§

fn type_info() -> &'static TypeInfo

source§

impl<const N: usize> Typed for Polygon<N>
where Self: Any + Send + Sync, [Vec2; N]: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl<const N: usize> Typed for Polyline2d<N>
where Self: Any + Send + Sync, [Vec2; N]: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

impl<const N: usize> Typed for Polyline3d<N>
where Self: Any + Send + Sync, [Vec3; N]: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

Implementors§

source§

impl Typed for dyn Reflect