Trait fyrox_core::reflect::Reflect
source · pub trait Reflect: Any + Debug {
Show 22 methods
// Required methods
fn type_name(&self) -> &'static str;
fn doc(&self) -> &'static str;
fn fields_info(&self, func: &mut dyn FnMut(&[FieldInfo<'_, '_>]));
fn into_any(self: Box<Self>) -> Box<dyn Any>;
fn as_any(&self, func: &mut dyn FnMut(&dyn Any));
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any));
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect));
fn as_reflect_mut(&mut self, func: &mut dyn FnMut(&mut dyn Reflect));
fn set(
&mut self,
value: Box<dyn Reflect>
) -> Result<Box<dyn Reflect>, Box<dyn Reflect>>;
// Provided methods
fn set_field(
&mut self,
field: &str,
value: Box<dyn Reflect>,
func: &mut dyn FnMut(Result<Box<dyn Reflect>, Box<dyn Reflect>>)
) { ... }
fn fields(&self, func: &mut dyn FnMut(&[&dyn Reflect])) { ... }
fn fields_mut(&mut self, func: &mut dyn FnMut(&mut [&mut dyn Reflect])) { ... }
fn field(&self, name: &str, func: &mut dyn FnMut(Option<&dyn Reflect>)) { ... }
fn field_mut(
&mut self,
name: &str,
func: &mut dyn FnMut(Option<&mut dyn Reflect>)
) { ... }
fn as_array(&self, func: &mut dyn FnMut(Option<&dyn ReflectArray>)) { ... }
fn as_array_mut(
&mut self,
func: &mut dyn FnMut(Option<&mut dyn ReflectArray>)
) { ... }
fn as_list(&self, func: &mut dyn FnMut(Option<&dyn ReflectList>)) { ... }
fn as_list_mut(
&mut self,
func: &mut dyn FnMut(Option<&mut dyn ReflectList>)
) { ... }
fn as_inheritable_variable(
&self,
func: &mut dyn FnMut(Option<&dyn ReflectInheritableVariable>)
) { ... }
fn as_inheritable_variable_mut(
&mut self,
func: &mut dyn FnMut(Option<&mut dyn ReflectInheritableVariable>)
) { ... }
fn as_hash_map(&self, func: &mut dyn FnMut(Option<&dyn ReflectHashMap>)) { ... }
fn as_hash_map_mut(
&mut self,
func: &mut dyn FnMut(Option<&mut dyn ReflectHashMap>)
) { ... }
}
Expand description
Trait for runtime reflection
Derive macro is available.
§Type attributes
#[reflect(hide_all)]
: Hide all fields, just likeAny
#[reflect(bounds)]
: Add type boundary forReflect
impl
§Field attributes
#[reflect(deref)]
: Delegate the field access with deref#[reflect(field = <method call>)]
#[reflect(field_mut = <method call>)]
§Additional Trait Bounds
Reflect
restricted to types that implement Debug
trait, this is needed to convert the actual value
to string. Display
isn’t used here, because it can’t be derived and it is very tedious to implement it
for every type that should support Reflect
trait. It is a good compromise between development speed
and the quality of the string output.
Required Methods§
fn type_name(&self) -> &'static str
fn doc(&self) -> &'static str
fn fields_info(&self, func: &mut dyn FnMut(&[FieldInfo<'_, '_>]))
fn into_any(self: Box<Self>) -> Box<dyn Any>
fn as_any(&self, func: &mut dyn FnMut(&dyn Any))
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any))
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect))
fn as_reflect_mut(&mut self, func: &mut dyn FnMut(&mut dyn Reflect))
fn set( &mut self, value: Box<dyn Reflect> ) -> Result<Box<dyn Reflect>, Box<dyn Reflect>>
Provided Methods§
sourcefn set_field(
&mut self,
field: &str,
value: Box<dyn Reflect>,
func: &mut dyn FnMut(Result<Box<dyn Reflect>, Box<dyn Reflect>>)
)
fn set_field( &mut self, field: &str, value: Box<dyn Reflect>, func: &mut dyn FnMut(Result<Box<dyn Reflect>, Box<dyn Reflect>>) )
Calls user method specified with #[reflect(setter = ..)]
or falls back to
Reflect::field_mut
fn fields(&self, func: &mut dyn FnMut(&[&dyn Reflect]))
fn fields_mut(&mut self, func: &mut dyn FnMut(&mut [&mut dyn Reflect]))
fn field(&self, name: &str, func: &mut dyn FnMut(Option<&dyn Reflect>))
fn field_mut( &mut self, name: &str, func: &mut dyn FnMut(Option<&mut dyn Reflect>) )
fn as_array(&self, func: &mut dyn FnMut(Option<&dyn ReflectArray>))
fn as_array_mut(&mut self, func: &mut dyn FnMut(Option<&mut dyn ReflectArray>))
fn as_list(&self, func: &mut dyn FnMut(Option<&dyn ReflectList>))
fn as_list_mut(&mut self, func: &mut dyn FnMut(Option<&mut dyn ReflectList>))
fn as_inheritable_variable( &self, func: &mut dyn FnMut(Option<&dyn ReflectInheritableVariable>) )
fn as_inheritable_variable_mut( &mut self, func: &mut dyn FnMut(Option<&mut dyn ReflectInheritableVariable>) )
fn as_hash_map(&self, func: &mut dyn FnMut(Option<&dyn ReflectHashMap>))
fn as_hash_map_mut( &mut self, func: &mut dyn FnMut(Option<&mut dyn ReflectHashMap>) )
Implementations§
source§impl dyn Reflect
impl dyn Reflect
Type-erased API
pub fn downcast<T: Reflect>( self: Box<dyn Reflect> ) -> Result<Box<T>, Box<dyn Reflect>>
pub fn take<T: Reflect>(self: Box<dyn Reflect>) -> Result<T, Box<dyn Reflect>>
pub fn is<T: Reflect>(&self) -> bool
pub fn downcast_ref<T: Reflect>(&self, func: &mut dyn FnMut(Option<&T>))
pub fn downcast_mut<T: Reflect>(&mut self, func: &mut dyn FnMut(Option<&mut T>))
sourcepub fn set_field_by_path<'p>(
&mut self,
path: &'p str,
value: Box<dyn Reflect>,
func: &mut dyn FnMut(Result<Box<dyn Reflect>, SetFieldByPathError<'p>>)
)
pub fn set_field_by_path<'p>( &mut self, path: &'p str, value: Box<dyn Reflect>, func: &mut dyn FnMut(Result<Box<dyn Reflect>, SetFieldByPathError<'p>>) )
Sets a field by its path in the given entity. This method always uses Reflect::set_field
which means,
that it will always call custom property setters.