Trait bevy::reflect::FromReflect

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 + 'static, Global>
    ) -> Result<Self, Box<dyn Reflect + 'static, 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§

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

Constructs a concrete instance of Self from a reflected value.

Provided Methods§

fn take_from_reflect( reflect: Box<dyn Reflect + 'static, Global> ) -> Result<Self, Box<dyn Reflect + 'static, 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§

§

impl FromReflect for bool

§

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

§

impl FromReflect for NonZeroI64

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

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, B: FromReflect, C: FromReflect, D: FromReflect, E: FromReflect, F: FromReflect, G: FromReflect, H: FromReflect, I: FromReflect, J: FromReflect, K: FromReflect, L: FromReflect,

§

impl FromReflect for u64

§

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

§

impl FromReflect for NonZeroU64

§

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

§

impl FromReflect for NonZeroI8

§

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

§

impl FromReflect for NonZeroU8

§

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

§

impl FromReflect for PathBuf

§

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

§

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

§

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

§

impl FromReflect for NonZeroUsize

§

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

§

impl FromReflect for OsString

§

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

§

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

§

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

§

impl FromReflect for RangeFull

§

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

§

impl FromReflect for f32

§

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

§

impl FromReflect for i32

§

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

§

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, B: FromReflect, C: FromReflect, D: FromReflect, E: FromReflect, F: FromReflect, G: FromReflect, H: FromReflect, I: FromReflect, J: FromReflect, K: FromReflect,

§

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

§

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

§

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

§

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

§

impl FromReflect for char

§

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

§

impl FromReflect for usize

§

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

§

impl FromReflect for u128

§

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

§

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

§

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

§

impl FromReflect for i128

§

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

§

impl FromReflect for isize

§

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

§

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

§

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

§

impl FromReflect for String

§

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

§

impl FromReflect for u16

§

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

§

impl FromReflect for NonZeroIsize

§

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

§

impl FromReflect for NonZeroU32

§

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

§

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

§

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

§

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

§

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

§

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

§

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

§

impl FromReflect for ()

§

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

§

impl FromReflect for i64

§

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

§

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

§

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

§

impl FromReflect for NonZeroU128

§

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

§

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

§

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

§

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

§

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

§

impl FromReflect for f64

§

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

§

impl FromReflect for u32

§

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

§

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

§

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

§

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

§

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

§

impl FromReflect for Cow<'static, str>

§

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

§

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

§

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

§

impl FromReflect for NonZeroI32

§

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

§

impl FromReflect for i8

§

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

§

impl FromReflect for u8

§

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

§

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, B: FromReflect, C: FromReflect, D: FromReflect, E: FromReflect, F: FromReflect, G: FromReflect, H: FromReflect, I: FromReflect, J: FromReflect,

§

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

§

impl FromReflect for Instant

§

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

§

impl FromReflect for i16

§

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

§

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

§

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

§

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

§

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

§

impl FromReflect for &'static Path

§

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

§

impl FromReflect for NonZeroU16

§

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

§

impl FromReflect for NonZeroI16

§

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

§

impl FromReflect for NonZeroI128

§

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

Implementors§

§

impl FromReflect for Keyframes

§

impl FromReflect for HandleId

§

impl FromReflect for Sensitivity

§

impl FromReflect for DebandDither

§

impl FromReflect for Tonemapping

§

impl FromReflect for ButtonState

§

impl FromReflect for GamepadAxisType

§

impl FromReflect for GamepadButtonType

§

impl FromReflect for GamepadConnection

§

impl FromReflect for GamepadEvent

§

impl FromReflect for KeyCode

§

impl FromReflect for MouseButton

§

impl FromReflect for MouseScrollUnit

§

impl FromReflect for ForceTouch

§

impl FromReflect for TouchPhase

§

impl FromReflect for AlphaMode

§

impl FromReflect for ClusterFarZMode

§

impl FromReflect for ScalingMode

§

impl FromReflect for Color

§

impl FromReflect for Visibility

§

impl FromReflect for TimerMode

§

impl FromReflect for CompositeAlphaMode

§

impl FromReflect for CursorGrabMode

§

impl FromReflect for CursorIcon

§

impl FromReflect for FileDragAndDrop

§

impl FromReflect for Ime

§

impl FromReflect for MonitorSelection

§

impl FromReflect for PresentMode

§

impl FromReflect for WindowLevel

§

impl FromReflect for WindowMode

§

impl FromReflect for WindowPosition

§

impl FromReflect for WindowRef

§

impl FromReflect for AnimationClipwhere Vec<Vec<VariableCurve, Global>, Global>: FromReflect, HashMap<EntityPath, usize, RandomState, Global>: FromReflect, f32: FromReflect,

§

impl FromReflect for EntityPathwhere Vec<Name, Global>: FromReflect,

§

impl FromReflect for VariableCurvewhere Vec<f32, Global>: FromReflect, Keyframes: FromReflect,

§

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

§

impl FromReflect for Fxaawhere bool: FromReflect, Sensitivity: FromReflect,

§

impl FromReflect for Entity

§

impl FromReflect for AxisSettingswhere f32: FromReflect,

§

impl FromReflect for ButtonAxisSettingswhere f32: FromReflect,

§

impl FromReflect for ButtonSettingswhere f32: FromReflect,

§

impl FromReflect for Gamepadwhere usize: FromReflect,

§

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

§

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

§

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

§

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

§

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

§

impl FromReflect for GamepadInfowhere String: FromReflect,

§

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

§

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

§

impl FromReflect for ScanCodewhere u32: FromReflect,

§

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

§

impl FromReflect for MouseMotionwhere Vec2: FromReflect,

§

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

§

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

§

impl FromReflect for BVec2where bool: FromReflect,

§

impl FromReflect for BVec3where bool: FromReflect,

§

impl FromReflect for BVec4where bool: FromReflect,

§

impl FromReflect for Mat2where Vec2: FromReflect,

§

impl FromReflect for Mat3where Vec3: FromReflect,

§

impl FromReflect for Mat4where Vec4: FromReflect,

§

impl FromReflect for Quat

§

impl FromReflect for Vec2where f32: FromReflect,

§

impl FromReflect for Vec3where f32: FromReflect,

§

impl FromReflect for Vec4where f32: FromReflect,

§

impl FromReflect for IVec2where i32: FromReflect,

§

impl FromReflect for IVec3where i32: FromReflect,

§

impl FromReflect for IVec4where i32: FromReflect,

§

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

§

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

§

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

§

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

§

impl FromReflect for DMat2where DVec2: FromReflect,

§

impl FromReflect for DMat3where DVec3: FromReflect,

§

impl FromReflect for DMat4where DVec4: FromReflect,

§

impl FromReflect for DQuat

§

impl FromReflect for DVec2where f64: FromReflect,

§

impl FromReflect for DVec3where f64: FromReflect,

§

impl FromReflect for DVec4where f64: FromReflect,

§

impl FromReflect for Mat3Awhere Vec3A: FromReflect,

§

impl FromReflect for Rectwhere Vec2: FromReflect,

§

impl FromReflect for Vec3Awhere f32: FromReflect,

§

impl FromReflect for UVec2where u32: FromReflect,

§

impl FromReflect for UVec3where u32: FromReflect,

§

impl FromReflect for UVec4where u32: FromReflect,

§

impl FromReflect for Cascadewhere Mat4: FromReflect, f32: FromReflect,

§

impl FromReflect for ClusterZConfigwhere f32: FromReflect, ClusterFarZMode: FromReflect,

§

impl FromReflect for StandardMaterialwhere Color: FromReflect, Option<Handle<Image>>: FromReflect, f32: FromReflect, bool: FromReflect, AlphaMode: FromReflect,

§

impl FromReflect for Camerawhere Option<Viewport>: FromReflect, isize: FromReflect, bool: FromReflect,

§

impl FromReflect for OrthographicProjectionwhere f32: FromReflect, Vec2: FromReflect, ScalingMode: FromReflect, Rect: FromReflect,

§

impl FromReflect for PerspectiveProjectionwhere f32: FromReflect,

§

impl FromReflect for Viewportwhere UVec2: FromReflect, Range<f32>: FromReflect,

§

impl FromReflect for Aabbwhere Vec3A: FromReflect,

§

impl FromReflect for Image

§

impl FromReflect for ColorMaterialwhere Color: FromReflect, Option<Handle<Image>>: FromReflect,

§

impl FromReflect for TextureAtlaswhere Handle<Image>: FromReflect, Vec2: FromReflect, Vec<Rect, Global>: FromReflect, Option<HashMap<Handle<Image>, usize, RandomState, Global>>: FromReflect,

§

impl FromReflect for TextSectionwhere String: FromReflect, TextStyle: FromReflect,

§

impl FromReflect for TextStylewhere Handle<Font>: FromReflect, f32: FromReflect, Color: FromReflect,

§

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

§

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

§

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

§

impl FromReflect for GlobalTransformwhere Affine3A: FromReflect,

§

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

§

impl FromReflect for Duration

§

impl FromReflect for Cursorwhere CursorIcon: FromReflect, bool: FromReflect, CursorGrabMode: FromReflect, Option<DVec2>: FromReflect,

§

impl FromReflect for CursorEnteredwhere Entity: FromReflect,

§

impl FromReflect for CursorLeftwhere Entity: FromReflect,

§

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

§

impl FromReflect for InternalWindowStatewhere Option<bool>: FromReflect,

§

impl FromReflect for NormalizedWindowRefwhere Entity: FromReflect,

§

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

§

impl FromReflect for RequestRedraw

§

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,

§

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

§

impl FromReflect for WindowCloseRequestedwhere Entity: FromReflect,

§

impl FromReflect for WindowClosedwhere Entity: FromReflect,

§

impl FromReflect for WindowCreatedwhere Entity: FromReflect,

§

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

§

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

§

impl FromReflect for WindowResizeConstraintswhere f32: FromReflect,

§

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

§

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

§

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

§

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

§

impl<T> FromReflect for Handle<T>where T: Asset, HandleId: FromReflect,

§

impl<T> FromReflect for HashSet<T, RandomState, Global>where T: Hash + Eq + Clone + Send + Sync + 'static,