removed Reflect::as_any/as_any_mut

- useless methods because can be replaced via `Reflect::as_reflect` + `as &dyn Reflect` cast
This commit is contained in:
Dmitry Stepanov
2026-05-13 23:33:13 +03:00
parent 8df053acf4
commit 91f8c360b5
18 changed files with 38 additions and 153 deletions
+10 -9
View File
@@ -869,30 +869,30 @@ impl TrackList {
}
ValueBinding::Property { name, .. } => node_ref.find_field(name, &mut |value| {
if let Some(value) = value {
value.as_any(&mut |any| {
value.as_reflect(&mut |reflect| {
let curves = track.data_container().curves_ref();
if curves.len() == 1 {
if let Some(scalar) = any_scalar_to_f32(any) {
if let Some(scalar) = any_scalar_to_f32(reflect) {
adder.add(&[scalar]);
} else {
err!("Unable to set {name} scalar property!");
}
} else if curves.len() == 2 {
if let Some(vec2) = any_vec_to_f32::<2>(any) {
if let Some(vec2) = any_vec_to_f32::<2>(reflect) {
adder.add(vec2.as_slice())
} else {
err!("Unable to set {name} Vector2 property!");
}
} else if curves.len() == 3 {
if let Some(vec3) = any_vec_to_f32::<3>(any) {
if let Some(vec3) = any_vec_to_f32::<3>(reflect) {
adder.add(vec3.as_slice())
} else {
err!("Unable to set {name} Vector3 property!");
}
} else if curves.len() == 4 {
if let Some(vec4) = any_vec_to_f32::<4>(any) {
if let Some(vec4) = any_vec_to_f32::<4>(reflect) {
adder.add(vec4.as_slice())
} else if let Some(quat) = any_quat_to_f32(any) {
} else if let Some(quat) = any_quat_to_f32(reflect) {
adder.add(quat.coords.as_slice())
} else {
err!(
@@ -1104,7 +1104,8 @@ impl TrackList {
node.resolve_path(&property_path.path, &mut |result| match result {
Ok(property) => {
let mut property_type = TypeId::of::<u32>();
property.as_any(&mut |any| property_type = any.type_id());
property
.as_reflect(&mut |reflect| property_type = reflect.type_id());
let types = type_id_to_supported_type(property_type);
@@ -1410,7 +1411,7 @@ impl TrackList {
node.resolve_path(&desc.path, &mut |result| match result {
Ok(property) => {
let mut property_type = TypeId::of::<u32>();
property.as_any(&mut |any| property_type = any.type_id());
property.as_reflect(&mut |reflect| property_type = reflect.type_id());
let types = type_id_to_supported_type(property_type);
@@ -1713,7 +1714,7 @@ impl TrackList {
target.resolve_path(name, &mut |result| match result {
Ok(value) => {
let mut property_type = TypeId::of::<u32>();
value.as_any(&mut |any| property_type = any.type_id());
value.as_reflect(&mut |reflect| property_type = reflect.type_id());
if let Some((_, type_)) = type_id_to_supported_type(property_type) {
if *value_type != type_ {
+3 -3
View File
@@ -494,10 +494,10 @@ impl EditorPlugin for InspectorPlugin {
can_clone = property.try_clone_box().is_some();
if let Some(value) = self.clipboard.as_ref() {
value.as_any(&mut |value| {
property.as_any(&mut |property| {
value.as_reflect(&mut |reflect| {
property.as_reflect(&mut |property| {
can_paste =
property.type_id() == value.type_id();
property.type_id() == reflect.type_id();
})
})
}
+2 -2
View File
@@ -409,8 +409,8 @@ impl BoundValue {
object_ref.resolve_path_mut(property_path, &mut |result| match result {
Ok(property) => {
let mut applied = false;
property.as_any_mut(&mut |any| {
applied = self.value.apply_to_any(any, value_type);
property.as_reflect_mut(&mut |reflect| {
applied = self.value.apply_to_any(reflect, value_type);
});
if applied {
property.as_inheritable_variable_mut(&mut |var| {
-8
View File
@@ -518,14 +518,6 @@ fn gen_impl(
#set_field
fn as_any(&self, func: &mut dyn FnMut(&dyn ::core::any::Any)) {
func(self)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn ::core::any::Any)) {
func(self)
}
fn as_reflect_direct(&self) -> &dyn Reflect {
self
}
-8
View File
@@ -218,14 +218,6 @@ impl Reflect for DynTypeWrapper {
self
}
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
func(self)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
func(self)
}
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect)) {
func(self)
}
-8
View File
@@ -184,14 +184,6 @@ impl<T: Reflect> Reflect for Handle<T> {
self
}
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
func(self)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
func(self)
}
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect)) {
func(self)
}
-10
View File
@@ -192,16 +192,6 @@ where
self
}
#[inline]
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
func(self)
}
#[inline]
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
func(self)
}
fn as_reflect_direct(&self) -> &dyn Reflect {
self
}
-10
View File
@@ -185,16 +185,6 @@ macro_rules! impl_reflect_inner_mutability {
Box::new(inner)
}
fn as_any(&$self, func: &mut dyn FnMut(&dyn Any)) {
let guard = $acquire_lock_guard;
(*guard).as_any(func)
}
fn as_any_mut(&mut $self, func: &mut dyn FnMut(&mut dyn Any)) {
let mut guard = $acquire_lock_guard;
(*guard).as_any_mut(func)
}
fn as_reflect(&$self, func: &mut dyn FnMut(&dyn Reflect)) {
let guard = $acquire_lock_guard;
(*guard).as_reflect(func)
-24
View File
@@ -184,14 +184,6 @@ macro_rules! delegate_reflect {
(*self).into_any()
}
fn as_any(&self, func: &mut dyn FnMut(&dyn std::any::Any)) {
self.deref().as_any(func)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn std::any::Any)) {
self.deref_mut().as_any_mut(func)
}
fn as_reflect(&self, func: &mut dyn FnMut(&dyn $crate::reflect::Reflect)) {
self.deref().as_reflect(func)
}
@@ -354,14 +346,6 @@ macro_rules! blank_reflect {
self
}
fn as_any(&self, func: &mut dyn FnMut(&dyn std::any::Any)) {
func(self)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn std::any::Any)) {
func(self)
}
fn as_reflect(&self, func: &mut dyn FnMut(&dyn $crate::reflect::Reflect)) {
func(self)
}
@@ -463,14 +447,6 @@ macro_rules! blank_reflect_ref {
self
}
fn as_any(&self, func: &mut dyn FnMut(&dyn std::any::Any)) {
func(self)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn std::any::Any)) {
func(self)
}
fn as_reflect(&self, func: &mut dyn FnMut(&dyn $crate::reflect::Reflect)) {
func(self)
}
+10 -10
View File
@@ -141,10 +141,6 @@ pub trait Reflect: Any + Debug {
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_direct(&self) -> &dyn Reflect;
fn as_reflect_mut_direct(&mut self) -> &mut dyn Reflect;
@@ -313,12 +309,12 @@ impl dyn Reflect {
#[inline]
pub fn downcast_ref<T: Reflect>(&self, func: &mut dyn FnMut(Option<&T>)) {
self.as_any(&mut |any| func(any.downcast_ref::<T>()))
self.as_reflect(&mut |reflect| func((reflect as &dyn Any).downcast_ref::<T>()))
}
#[inline]
pub fn downcast_mut<T: Reflect>(&mut self, func: &mut dyn FnMut(Option<&mut T>)) {
self.as_any_mut(&mut |any| func(any.downcast_mut::<T>()))
self.as_reflect_mut(&mut |reflect| func((reflect as &mut dyn Any).downcast_mut::<T>()))
}
/// Tries to find the first field of the given type. This method internally uses
@@ -779,16 +775,20 @@ pub trait GetField {
impl<R: Reflect> GetField for R {
fn get_field<T: 'static>(&self, name: &str, func: &mut dyn FnMut(Option<&T>)) {
self.find_field(name, &mut |field| match field {
self.find_field(name, &mut |opt_field| match opt_field {
None => func(None),
Some(reflect) => reflect.as_any(&mut |any| func(any.downcast_ref())),
Some(field) => {
field.as_reflect(&mut |reflect| func((reflect as &dyn Any).downcast_ref()))
}
})
}
fn get_field_mut<T: 'static>(&mut self, name: &str, func: &mut dyn FnMut(Option<&mut T>)) {
self.find_field_mut(name, &mut |field| match field {
self.find_field_mut(name, &mut |opt_field| match opt_field {
None => func(None),
Some(reflect) => reflect.as_any_mut(&mut |any| func(any.downcast_mut())),
Some(field) => {
field.as_reflect_mut(&mut |reflect| func((reflect as &mut dyn Any).downcast_mut()))
}
})
}
}
-10
View File
@@ -454,16 +454,6 @@ where
Box::new(self.value).into_any()
}
#[inline]
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
self.value.as_any(func)
}
#[inline]
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
self.value.as_any_mut(func)
}
#[inline]
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect)) {
self.value.as_reflect(func)
+2 -10
View File
@@ -1750,14 +1750,6 @@ mod test {
Reflect::into_any(self.0)
}
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
Reflect::as_any(self.0.deref(), func)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
Reflect::as_any_mut(self.0.deref_mut(), func)
}
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect)) {
self.0.deref().as_reflect(func)
}
@@ -2332,8 +2324,8 @@ mod test {
.unwrap()
.transmute::<RigidBody>();
let joint_copy = mapping.inner().get(&joint).cloned().unwrap();
Reflect::as_any(&scene_graph.nodes[joint_copy], &mut |any| {
let joint_copy_ref = any.downcast_ref::<Joint>().unwrap();
scene_graph.nodes[joint_copy].as_reflect(&mut |reflect| {
let joint_copy_ref = (reflect as &dyn Any).downcast_ref::<Joint>().unwrap();
assert_eq!(joint_copy_ref.connected_body1, rigid_body_copy);
assert_eq!(joint_copy_ref.connected_body2, rigid_body2_copy);
});
+3 -2
View File
@@ -77,6 +77,7 @@ use crate::{
use bitflags::bitflags;
use fxhash::{FxHashMap, FxHashSet};
use fyrox_material::MaterialResourceExtension;
use std::any::Any;
use std::{
any::TypeId,
fmt::{Debug, Display, Formatter, Write},
@@ -537,8 +538,8 @@ impl Graph {
for (node_handle, node) in self.pair_iter() {
(node as &dyn Reflect).apply_recursively(
&mut |object| {
object.as_any(&mut |any| {
if let Some(handle) = any.downcast_ref::<Handle<Node>>() {
object.as_reflect(&mut |reflect| {
if let Some(handle) = (reflect as &dyn Any).downcast_ref::<Handle<Node>>() {
if *handle == target {
references.push(node_handle);
}
-8
View File
@@ -611,14 +611,6 @@ impl Reflect for Node {
Reflect::into_any(self.0)
}
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
Reflect::as_any(self.0.deref(), func)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
Reflect::as_any_mut(self.0.deref_mut(), func)
}
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect)) {
self.0.deref().as_reflect(func)
}
-8
View File
@@ -763,14 +763,6 @@ impl Reflect for Script {
self.instance.into_any()
}
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
self.instance.deref().as_any(func)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
self.instance.deref_mut().as_any_mut(func)
}
fn as_reflect(&self, func: &mut dyn FnMut(&dyn Reflect)) {
self.instance.deref().as_reflect(func)
}
-8
View File
@@ -130,14 +130,6 @@ impl Reflect for ResourceDataWrapper {
self
}
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
self.deref().as_any(func)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
self.deref_mut().as_any_mut(func)
}
fn as_reflect_direct(&self) -> &dyn Reflect {
self.deref().as_reflect_direct()
}
+8 -7
View File
@@ -291,17 +291,18 @@ impl PartialEq for ObjectValue {
impl ObjectValue {
pub fn cast_value<T: 'static>(&self, func: &mut dyn FnMut(Option<&T>)) {
(*self.value).as_any(&mut |any| func(any.downcast_ref::<T>()))
(*self.value).as_reflect(&mut |reflect| func((reflect as &dyn Any).downcast_ref::<T>()))
}
pub fn cast_clone<T: Clone + 'static>(&self, func: &mut dyn FnMut(Option<T>)) {
(*self.value).as_any(&mut |any| func(any.downcast_ref::<T>().cloned()))
(*self.value)
.as_reflect(&mut |reflect| func((reflect as &dyn Any).downcast_ref::<T>().cloned()))
}
pub fn try_override<T: Clone + 'static>(&self, value: &mut T) -> bool {
let mut result = false;
(*self.value).as_any(&mut |any| {
if let Some(self_value) = any.downcast_ref::<T>() {
(*self.value).as_reflect(&mut |reflect| {
if let Some(self_value) = (reflect as &dyn Any).downcast_ref::<T>() {
*value = self_value.clone();
result = true;
}
@@ -582,8 +583,8 @@ impl Inspector {
can_clone = field.try_clone_box().is_some();
if let Some(clipboard_value) = clipboard_value {
clipboard_value.as_any(&mut |clipboard_value| {
field.as_any(&mut |field| {
clipboard_value.as_reflect(&mut |clipboard_value| {
field.as_reflect(&mut |field| {
can_paste = field.type_id() == clipboard_value.type_id();
})
});
@@ -843,7 +844,7 @@ impl PartialEq for InspectorContext {
fn object_type_id(object: &dyn Reflect) -> TypeId {
let mut object_type_id = None;
object.as_any(&mut |any| object_type_id = Some(any.type_id()));
object.as_reflect(&mut |reflect| object_type_id = Some(reflect.type_id()));
object_type_id.unwrap()
}
-8
View File
@@ -301,14 +301,6 @@ impl Reflect for UiNode {
Reflect::into_any(self.0)
}
fn as_any(&self, func: &mut dyn FnMut(&dyn Any)) {
Reflect::as_any(self.0.deref(), func)
}
fn as_any_mut(&mut self, func: &mut dyn FnMut(&mut dyn Any)) {
Reflect::as_any_mut(self.0.deref_mut(), func)
}
fn as_reflect_direct(&self) -> &dyn Reflect {
self.0.deref().as_reflect_direct()
}