pub trait FromReflect: Reflect + Sized {
    // Required method
    fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Self>;

    // Provided method
    fn take_from_reflect(
        reflect: Box<dyn Reflect, Global>
    ) -> Result<Self, Box<dyn Reflect, Global>> { ... }
}
Expand description

A trait that enables types to be dynamically constructed from reflected data.

It’s recommended to use the derive macro rather than manually implementing this trait.

FromReflect allows dynamic proxy types, like DynamicStruct, to be used to generate their concrete counterparts. It can also be used to partially or fully clone a type (depending on whether it has ignored fields or not).

In some cases, this trait may even be required. Deriving Reflect on an enum requires all its fields to implement FromReflect. Additionally, some complex types like Vec<T> require that their element types implement this trait. The reason for such requirements is that some operations require new data to be constructed, such as swapping to a new variant or pushing data to a homogenous list.

See the crate-level documentation to see how this trait can be used.

Required Methods§

source

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Self>

Constructs a concrete instance of Self from a reflected value.

Provided Methods§

source

fn take_from_reflect( reflect: Box<dyn Reflect, Global> ) -> Result<Self, Box<dyn Reflect, Global>>

Attempts to downcast the given value to Self using, constructing the value using from_reflect if that fails.

This method is more efficient than using from_reflect for cases where the given value is likely a boxed instance of Self (i.e. Box<Self>) rather than a boxed dynamic type (e.g. DynamicStruct, DynamicList, etc.).

Implementations on Foreign Types§

source§

impl FromReflect for Instant

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Instant>

source§

impl FromReflect for i64

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<i64>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<RangeFrom<T>>

source§

impl FromReflect for Cow<'static, Path>

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Cow<'static, Path>>

source§

impl FromReflect for String

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<String>

source§

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

source§

fn from_reflect( reflect: &(dyn Reflect + 'static) ) -> Option<VecDeque<T, Global>>

source§

impl FromReflect for u64

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<u64>

source§

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

source§

fn from_reflect( reflect: &(dyn Reflect + 'static) ) -> Option<RangeToInclusive<T>>

source§

impl FromReflect for u16

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<u16>

source§

impl FromReflect for NonZeroI32

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroI32>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<(A,)>

source§

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

source§

impl FromReflect for u8

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<u8>

source§

impl<T, E> FromReflect for Result<T, E>where T: Clone + Reflect + TypePath, E: Clone + Reflect + TypePath,

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Result<T, E>>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Vec<T, Global>>

source§

impl FromReflect for NonZeroU8

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroU8>

source§

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

source§

fn from_reflect( reflect: &(dyn Reflect + 'static) ) -> Option<(A, B, C, D, E, F, G)>

source§

impl FromReflect for NonZeroU64

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroU64>

source§

impl FromReflect for PathBuf

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<PathBuf>

source§

impl FromReflect for f32

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<f32>

source§

impl FromReflect for Cow<'static, str>

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Cow<'static, str>>

source§

impl FromReflect for f64

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<f64>

source§

impl FromReflect for u32

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<u32>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<[T; N]>

source§

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

source§

impl FromReflect for OsString

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<OsString>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<(A, B, C, D, E, F)>

source§

impl FromReflect for NonZeroU32

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroU32>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<RangeInclusive<T>>

source§

impl FromReflect for i16

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<i16>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<(A, B)>

source§

impl FromReflect for isize

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<isize>

source§

impl FromReflect for usize

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<usize>

source§

impl FromReflect for char

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<char>

source§

impl FromReflect for NonZeroIsize

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroIsize>

source§

impl FromReflect for NonZeroI8

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroI8>

source§

impl<A, B, C, D, E> FromReflect for (A, B, C, D, E)where A: FromReflect + TypePath, B: FromReflect + TypePath, C: FromReflect + TypePath, D: FromReflect + TypePath, E: FromReflect + TypePath,

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<(A, B, C, D, E)>

source§

impl<K, V, S> FromReflect for HashMap<K, V, S>where K: FromReflect + TypePath + Eq + Hash, V: FromReflect + TypePath, S: TypePath + BuildHasher + Default + Send + Sync,

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<HashMap<K, V, S>>

source§

impl FromReflect for i128

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<i128>

source§

impl FromReflect for ()

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<()>

source§

impl FromReflect for RangeFull

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<RangeFull>

source§

impl<A, B, C> FromReflect for (A, B, C)where A: FromReflect + TypePath, B: FromReflect + TypePath, C: FromReflect + TypePath,

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<(A, B, C)>

source§

impl FromReflect for NonZeroU16

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroU16>

source§

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

source§

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

source§

impl FromReflect for NonZeroI128

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroI128>

source§

impl FromReflect for SmolStr

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<SmolStr>

source§

impl FromReflect for NonZeroI64

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroI64>

source§

impl<T> FromReflect for Option<T>where T: FromReflect + TypePath,

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Option<T>>

source§

impl FromReflect for &'static Path

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<&'static Path>

source§

impl FromReflect for i32

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<i32>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Range<T>>

source§

impl<A, B, C, D> FromReflect for (A, B, C, D)where A: FromReflect + TypePath, B: FromReflect + TypePath, C: FromReflect + TypePath, D: FromReflect + TypePath,

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<(A, B, C, D)>

source§

impl FromReflect for NonZeroU128

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroU128>

source§

impl FromReflect for NonZeroUsize

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroUsize>

source§

impl FromReflect for NonZeroI16

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<NonZeroI16>

source§

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

source§

fn from_reflect( reflect: &(dyn Reflect + 'static) ) -> Option<(A, B, C, D, E, F, G, H)>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<RangeTo<T>>

source§

impl FromReflect for i8

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<i8>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<Cow<'static, [T]>>

source§

impl FromReflect for u128

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<u128>

source§

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

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<SmallVec<T>>

source§

impl FromReflect for bool

source§

fn from_reflect(reflect: &(dyn Reflect + 'static)) -> Option<bool>

Implementors§

source§

impl FromReflect for ButtonState

source§

impl FromReflect for GamepadConnectionwhere GamepadInfo: FromReflect,

source§

impl FromReflect for GamepadEventwhere GamepadConnectionEvent: FromReflect, GamepadButtonChangedEvent: FromReflect, GamepadAxisChangedEvent: FromReflect,

source§

impl FromReflect for MouseScrollUnit

source§

impl FromReflect for GamepadAxisTypewhere u8: FromReflect,

source§

impl FromReflect for GamepadButtonTypewhere u8: FromReflect,

source§

impl FromReflect for KeyCode

source§

impl FromReflect for MouseButtonwhere u16: FromReflect,

source§

impl FromReflect for ForceTouchwhere f64: FromReflect, Option<f64>: FromReflect,

source§

impl FromReflect for TouchPhase

source§

impl FromReflect for EulerRot

source§

impl FromReflect for TimerMode

source§

impl FromReflect for CompositeAlphaMode

source§

impl FromReflect for CursorGrabMode

source§

impl FromReflect for CursorIcon

source§

impl FromReflect for FileDragAndDropwhere Entity: FromReflect, PathBuf: FromReflect,

source§

impl FromReflect for Imewhere Entity: FromReflect, String: FromReflect, Option<(usize, usize)>: FromReflect,

source§

impl FromReflect for MonitorSelectionwhere usize: FromReflect,

source§

impl FromReflect for PresentMode

source§

impl FromReflect for WindowLevel

source§

impl FromReflect for WindowMode

source§

impl FromReflect for WindowPositionwhere MonitorSelection: FromReflect, IVec2: FromReflect,

source§

impl FromReflect for WindowRefwhere Entity: FromReflect,

source§

impl FromReflect for WindowTheme

source§

impl FromReflect for Namewhere u64: FromReflect, Cow<'static, str>: FromReflect,

source§

impl FromReflect for Entity

source§

impl FromReflect for Childrenwhere SmallVec<[Entity; 8]>: FromReflect,

source§

impl FromReflect for Parentwhere Entity: FromReflect,

source§

impl FromReflect for AxisSettingswhere f32: FromReflect,

source§

impl FromReflect for ButtonAxisSettingswhere f32: FromReflect,

source§

impl FromReflect for ButtonSettingswhere f32: FromReflect,

source§

impl FromReflect for GamepadAxisChangedEventwhere Gamepad: FromReflect, GamepadAxisType: FromReflect, f32: FromReflect,

source§

impl FromReflect for GamepadButtonChangedEventwhere Gamepad: FromReflect, GamepadButtonType: FromReflect, f32: FromReflect,

source§

impl FromReflect for GamepadConnectionEventwhere Gamepad: FromReflect, GamepadConnection: FromReflect,

source§

impl FromReflect for GamepadInfowhere String: FromReflect,

source§

impl FromReflect for GamepadSettingswhere ButtonSettings: FromReflect, AxisSettings: FromReflect, ButtonAxisSettings: FromReflect, HashMap<GamepadButton, ButtonSettings, BuildHasherDefault<AHasher>, Global>: FromReflect, HashMap<GamepadAxis, AxisSettings, BuildHasherDefault<AHasher>, Global>: FromReflect, HashMap<GamepadButton, ButtonAxisSettings, BuildHasherDefault<AHasher>, Global>: FromReflect,

source§

impl FromReflect for KeyboardInputwhere u32: FromReflect, Option<KeyCode>: FromReflect, ButtonState: FromReflect, Entity: FromReflect,

source§

impl FromReflect for MouseButtonInputwhere MouseButton: FromReflect, ButtonState: FromReflect, Entity: FromReflect,

source§

impl FromReflect for MouseMotionwhere Vec2: FromReflect,

source§

impl FromReflect for MouseWheelwhere MouseScrollUnit: FromReflect, f32: FromReflect, Entity: FromReflect,

source§

impl FromReflect for Gamepadwhere usize: FromReflect,

source§

impl FromReflect for GamepadAxiswhere Gamepad: FromReflect, GamepadAxisType: FromReflect,

source§

impl FromReflect for GamepadButtonwhere Gamepad: FromReflect, GamepadButtonType: FromReflect,

source§

impl FromReflect for ScanCodewhere u32: FromReflect,

source§

impl FromReflect for TouchInputwhere TouchPhase: FromReflect, Vec2: FromReflect, Option<ForceTouch>: FromReflect, u64: FromReflect,

source§

impl FromReflect for TouchpadMagnifywhere f32: FromReflect,

source§

impl FromReflect for TouchpadRotatewhere f32: FromReflect,

source§

impl FromReflect for BVec2where bool: FromReflect,

source§

impl FromReflect for BVec3where bool: FromReflect,

source§

impl FromReflect for BVec4where bool: FromReflect,

source§

impl FromReflect for Mat2where Vec2: FromReflect,

source§

impl FromReflect for Mat3where Vec3: FromReflect,

source§

impl FromReflect for Mat4where Vec4: FromReflect,

source§

impl FromReflect for Quat

source§

impl FromReflect for Vec2where f32: FromReflect,

source§

impl FromReflect for Vec3where f32: FromReflect,

source§

impl FromReflect for Vec4where f32: FromReflect,

source§

impl FromReflect for IVec2where i32: FromReflect,

source§

impl FromReflect for IVec3where i32: FromReflect,

source§

impl FromReflect for IVec4where i32: FromReflect,

source§

impl FromReflect for Affine2where Mat2: FromReflect, Vec2: FromReflect,

source§

impl FromReflect for Affine3Awhere Mat3A: FromReflect, Vec3A: FromReflect,

source§

impl FromReflect for BVec3A

source§

impl FromReflect for BVec4A

source§

impl FromReflect for DAffine2where DMat2: FromReflect, DVec2: FromReflect,

source§

impl FromReflect for DAffine3where DMat3: FromReflect, DVec3: FromReflect,

source§

impl FromReflect for DMat2where DVec2: FromReflect,

source§

impl FromReflect for DMat3where DVec3: FromReflect,

source§

impl FromReflect for DMat4where DVec4: FromReflect,

source§

impl FromReflect for DQuat

source§

impl FromReflect for DVec2where f64: FromReflect,

source§

impl FromReflect for DVec3where f64: FromReflect,

source§

impl FromReflect for DVec4where f64: FromReflect,

source§

impl FromReflect for Mat3Awhere Vec3A: FromReflect,

source§

impl FromReflect for Rectwhere Vec2: FromReflect,

source§

impl FromReflect for Vec3Awhere f32: FromReflect,

source§

impl FromReflect for UVec2where u32: FromReflect,

source§

impl FromReflect for UVec3where u32: FromReflect,

source§

impl FromReflect for UVec4where u32: FromReflect,

source§

impl FromReflect for Stopwatchwhere Duration: FromReflect, bool: FromReflect,

source§

impl FromReflect for Timewhere Instant: FromReflect, Option<Instant>: FromReflect, bool: FromReflect, f64: FromReflect, Duration: FromReflect, f32: FromReflect,

source§

impl FromReflect for Timerwhere Stopwatch: FromReflect, Duration: FromReflect, TimerMode: FromReflect, bool: FromReflect, u32: FromReflect,

source§

impl FromReflect for GlobalTransformwhere Affine3A: FromReflect,

source§

impl FromReflect for Transformwhere Vec3: FromReflect, Quat: FromReflect,

source§

impl FromReflect for Duration

source§

impl FromReflect for Uuid

source§

impl FromReflect for Cursorwhere CursorIcon: FromReflect, bool: FromReflect, CursorGrabMode: FromReflect,

source§

impl FromReflect for CursorEnteredwhere Entity: FromReflect,

source§

impl FromReflect for CursorLeftwhere Entity: FromReflect,

source§

impl FromReflect for CursorMovedwhere Entity: FromReflect, Vec2: FromReflect,

source§

impl FromReflect for InternalWindowStatewhere Option<bool>: FromReflect, Option<DVec2>: FromReflect,

source§

impl FromReflect for NormalizedWindowRefwhere Entity: FromReflect,

source§

impl FromReflect for PrimaryWindow

source§

impl FromReflect for ReceivedCharacterwhere Entity: FromReflect, char: FromReflect,

source§

impl FromReflect for RequestRedraw

source§

impl FromReflect for Windowwhere Cursor: FromReflect, PresentMode: FromReflect, WindowMode: FromReflect, WindowPosition: FromReflect, WindowResolution: FromReflect, String: FromReflect, CompositeAlphaMode: FromReflect, WindowResizeConstraints: FromReflect, bool: FromReflect, WindowLevel: FromReflect, Option<String>: FromReflect, InternalWindowState: FromReflect, Vec2: FromReflect, Option<WindowTheme>: FromReflect,

source§

impl FromReflect for WindowBackendScaleFactorChangedwhere Entity: FromReflect, f64: FromReflect,

source§

impl FromReflect for WindowCloseRequestedwhere Entity: FromReflect,

source§

impl FromReflect for WindowClosedwhere Entity: FromReflect,

source§

impl FromReflect for WindowCreatedwhere Entity: FromReflect,

source§

impl FromReflect for WindowDestroyedwhere Entity: FromReflect,

source§

impl FromReflect for WindowFocusedwhere Entity: FromReflect, bool: FromReflect,

source§

impl FromReflect for WindowMovedwhere Entity: FromReflect, IVec2: FromReflect,

source§

impl FromReflect for WindowResizeConstraintswhere f32: FromReflect,

source§

impl FromReflect for WindowResizedwhere Entity: FromReflect, f32: FromReflect,

source§

impl FromReflect for WindowResolutionwhere u32: FromReflect, Option<f64>: FromReflect, f64: FromReflect,

source§

impl FromReflect for WindowScaleFactorChangedwhere Entity: FromReflect, f64: FromReflect,

source§

impl FromReflect for WindowThemeChangedwhere Entity: FromReflect, WindowTheme: FromReflect,

source§

impl<K, V, S> FromReflect for bevy_internal::utils::hashbrown::HashMap<K, V, S, Global>where K: FromReflect + TypePath + Eq + Hash, V: FromReflect + TypePath, S: TypePath + BuildHasher + Default + Send + Sync,

source§

impl<T> FromReflect for Input<T>where T: Copy + Eq + Hash + Send + Sync + 'static + TypePath, HashSet<T, BuildHasherDefault<AHasher>, Global>: FromReflect,

source§

impl<T> FromReflect for HashSet<T, BuildHasherDefault<AHasher>, Global>where T: Hash + Eq + Clone + Send + Sync + TypePath,