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 bool
where bool: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for u128
where u128: 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 usize: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<i8>
where NonZero<i8>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<i16>
where NonZero<i16>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<i32>
where NonZero<i32>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<i64>
where NonZero<i64>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<i128>
where NonZero<i128>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<isize>
where NonZero<isize>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<u8>
where NonZero<u8>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<u16>
where NonZero<u16>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<u32>
where NonZero<u32>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<u64>
where NonZero<u64>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<u128>
where NonZero<u128>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

impl Typed for NonZero<usize>
where NonZero<usize>: Any + Send + Sync,

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

impl<A, B, C> Typed for (A, B, C)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A, B, C, D> Typed for (A, B, C, D)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A, B, C, D, E> Typed for (A, B, C, D, E)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A, B, C, D, E, F> Typed for (A, B, C, D, E, F)

source§

fn type_info() -> &'static TypeInfo

source§

impl<A, B, C, D, E, F, G> Typed for (A, B, C, D, E, F, G)

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

impl<A, B, C, D, E, F, G, H, I, J, K, L> 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<T> Typed for Option<T>
where T: FromReflect + TypePath,

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

source§

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

source§

fn type_info() -> &'static TypeInfo

Implementors§

source§

impl Typed for ButtonState
where ButtonState: Any + Send + Sync,

source§

impl Typed for GamepadConnection

source§

impl Typed for GamepadEvent

source§

impl Typed for Key

source§

impl Typed for NativeKey

source§

impl Typed for NativeKeyCode

source§

impl Typed for MouseScrollUnit

source§

impl Typed for GamepadAxisType

source§

impl Typed for GamepadButtonType

source§

impl Typed for KeyCode

source§

impl Typed for MouseButton

source§

impl Typed for ForceTouch

source§

impl Typed for TouchPhase
where TouchPhase: Any + Send + Sync,

source§

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

source§

impl Typed for TimerMode
where TimerMode: Any + Send + Sync,

source§

impl Typed for Cow<'static, str>

source§

impl Typed for Cow<'static, Path>

source§

impl Typed for ApplicationLifetime

source§

impl Typed for CompositeAlphaMode

source§

impl Typed for CursorGrabMode

source§

impl Typed for CursorIcon
where CursorIcon: Any + Send + Sync,

source§

impl Typed for FileDragAndDrop

source§

impl Typed for Ime

source§

impl Typed for MonitorSelection

source§

impl Typed for PresentMode
where PresentMode: Any + Send + Sync,

source§

impl Typed for WindowLevel
where WindowLevel: Any + Send + Sync,

source§

impl Typed for WindowMode
where WindowMode: Any + Send + Sync,

source§

impl Typed for WindowPosition

source§

impl Typed for WindowRef

source§

impl Typed for WindowTheme
where WindowTheme: Any + Send + Sync,

source§

impl Typed for Name

source§

impl Typed for ComponentId

source§

impl Typed for ComponentTicks

source§

impl Typed for Tick

source§

impl Typed for EntityHash
where EntityHash: Any + Send + Sync,

source§

impl Typed for Entity
where Entity: Any + Send + Sync,

source§

impl Typed for Children

source§

impl Typed for Parent

source§

impl Typed for AxisSettings

source§

impl Typed for ButtonAxisSettings

source§

impl Typed for ButtonSettings

source§

impl Typed for GamepadAxisChangedEvent

source§

impl Typed for GamepadButtonChangedEvent

source§

impl Typed for GamepadButtonInput

source§

impl Typed for GamepadConnectionEvent

source§

impl Typed for GamepadInfo

source§

impl Typed for GamepadSettings

source§

impl Typed for KeyboardInput

source§

impl Typed for MouseButtonInput

source§

impl Typed for MouseMotion

source§

impl Typed for MouseWheel

source§

impl Typed for Gamepad

source§

impl Typed for GamepadAxis

source§

impl Typed for GamepadButton

source§

impl Typed for TouchInput

source§

impl Typed for TouchpadMagnify

source§

impl Typed for TouchpadRotate

source§

impl Typed for BVec2

source§

impl Typed for BVec3

source§

impl Typed for BVec4

source§

impl Typed for Mat2

source§

impl Typed for Mat3

source§

impl Typed for Mat4

source§

impl Typed for Quat

source§

impl Typed for Vec2

source§

impl Typed for Vec3

source§

impl Typed for Vec4

source§

impl Typed for IVec2

source§

impl Typed for IVec3

source§

impl Typed for IVec4

source§

impl Typed for Capsule2d

source§

impl Typed for Capsule3d

source§

impl Typed for Circle

source§

impl Typed for Cone

source§

impl Typed for ConicalFrustum

source§

impl Typed for Cuboid

source§

impl Typed for Cylinder

source§

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

source§

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

source§

impl Typed for Ellipse

source§

impl Typed for Line2d

source§

impl Typed for Line3d

source§

impl Typed for Plane2d

source§

impl Typed for Plane3d

source§

impl Typed for Rectangle

source§

impl Typed for RegularPolygon

source§

impl Typed for Segment2d

source§

impl Typed for Segment3d

source§

impl Typed for Sphere

source§

impl Typed for Torus

source§

impl Typed for Triangle2d

source§

impl Typed for Affine2

source§

impl Typed for Affine3A

source§

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

source§

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

source§

impl Typed for DAffine2

source§

impl Typed for DAffine3

source§

impl Typed for DMat2

source§

impl Typed for DMat3

source§

impl Typed for DMat4

source§

impl Typed for DQuat

source§

impl Typed for DVec2

source§

impl Typed for DVec3

source§

impl Typed for DVec4

source§

impl Typed for I64Vec2

source§

impl Typed for I64Vec3

source§

impl Typed for I64Vec4

source§

impl Typed for IRect

source§

impl Typed for Mat3A

source§

impl Typed for Rect

source§

impl Typed for U64Vec2

source§

impl Typed for U64Vec3

source§

impl Typed for U64Vec4

source§

impl Typed for URect

source§

impl Typed for Vec3A

source§

impl Typed for UVec2

source§

impl Typed for UVec3

source§

impl Typed for UVec4

source§

impl Typed for Fixed

source§

impl Typed for Real

source§

impl Typed for Stopwatch

source§

impl Typed for Timer

source§

impl Typed for Virtual

source§

impl Typed for GlobalTransform

source§

impl Typed for Transform

source§

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

source§

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

source§

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

source§

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

source§

impl Typed for Cursor

source§

impl Typed for CursorEntered

source§

impl Typed for CursorLeft

source§

impl Typed for CursorMoved

source§

impl Typed for EnabledButtons

source§

impl Typed for InternalWindowState

source§

impl Typed for NormalizedWindowRef

source§

impl Typed for PrimaryWindow

source§

impl Typed for ReceivedCharacter

source§

impl Typed for RequestRedraw

source§

impl Typed for Window

source§

impl Typed for WindowBackendScaleFactorChanged

source§

impl Typed for WindowCloseRequested

source§

impl Typed for WindowClosed

source§

impl Typed for WindowCreated

source§

impl Typed for WindowDestroyed

source§

impl Typed for WindowFocused

source§

impl Typed for WindowMoved

source§

impl Typed for WindowOccluded

source§

impl Typed for WindowResizeConstraints

source§

impl Typed for WindowResized

source§

impl Typed for WindowResolution

source§

impl Typed for WindowScaleFactorChanged

source§

impl Typed for WindowThemeChanged

source§

impl Typed for dyn Reflect

source§

impl<K, V, S> Typed for bevy_internal::utils::hashbrown::HashMap<K, V, S>

source§

impl<S> Typed for NextState<S>

source§

impl<S> Typed for State<S>
where S: States + TypePath + FromReflect, State<S>: Any + Send + Sync,

source§

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

source§

impl<T> Typed for ButtonInput<T>
where T: Copy + Eq + Hash + Send + Sync + 'static + TypePath, ButtonInput<T>: Any + Send + Sync, HashSet<T>: FromReflect + TypePath,

source§

impl<T> Typed for Time<T>

source§

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

source§

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

source§

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

source§

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

source§

impl<T> Typed for SmallVec<T>
where T: Array + TypePath + Send + Sync + 'static, <T as Array>::Item: FromReflect + TypePath,

source§

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

source§

impl<const N: usize> Typed for Polyline2d<N>

source§

impl<const N: usize> Typed for Polyline3d<N>