Skip to content

Commit 114a6e2

Browse files
committed
Prefer reflect_type_info for dyn Reflect values
1 parent 5f422c7 commit 114a6e2

File tree

3 files changed

+16
-20
lines changed

3 files changed

+16
-20
lines changed

crates/bevy_reflect/src/lib.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1614,7 +1614,7 @@ mod tests {
16141614

16151615
// TypeInfo (instance)
16161616
let value: &dyn Reflect = &123_i32;
1617-
let info = value.get_represented_type_info().unwrap();
1617+
let info = value.reflect_type_info();
16181618
assert!(info.is::<i32>());
16191619

16201620
// Struct
@@ -1635,7 +1635,7 @@ mod tests {
16351635
assert_eq!(usize::type_path(), info.field_at(1).unwrap().type_path());
16361636

16371637
let value: &dyn Reflect = &MyStruct { foo: 123, bar: 321 };
1638-
let info = value.get_represented_type_info().unwrap();
1638+
let info = value.reflect_type_info();
16391639
assert!(info.is::<MyStruct>());
16401640

16411641
// Struct (generic)
@@ -1657,7 +1657,7 @@ mod tests {
16571657
foo: String::from("Hello!"),
16581658
bar: 321,
16591659
};
1660-
let info = value.get_represented_type_info().unwrap();
1660+
let info = value.reflect_type_info();
16611661
assert!(info.is::<MyGenericStruct<String>>());
16621662

16631663
// Struct (dynamic field)
@@ -1687,7 +1687,7 @@ mod tests {
16871687
foo: DynamicStruct::default(),
16881688
bar: 321,
16891689
};
1690-
let info = value.get_represented_type_info().unwrap();
1690+
let info = value.reflect_type_info();
16911691
assert!(info.is::<MyDynamicStruct>());
16921692

16931693
// Tuple Struct
@@ -1713,7 +1713,7 @@ mod tests {
17131713
assert!(info.field_at(1).unwrap().type_info().unwrap().is::<f32>());
17141714

17151715
let value: &dyn Reflect = &(123_u32, 1.23_f32, String::from("Hello!"));
1716-
let info = value.get_represented_type_info().unwrap();
1716+
let info = value.reflect_type_info();
17171717
assert!(info.is::<MyTuple>());
17181718

17191719
// List
@@ -1728,7 +1728,7 @@ mod tests {
17281728
assert_eq!(usize::type_path(), info.item_ty().path());
17291729

17301730
let value: &dyn Reflect = &vec![123_usize];
1731-
let info = value.get_represented_type_info().unwrap();
1731+
let info = value.reflect_type_info();
17321732
assert!(info.is::<MyList>());
17331733

17341734
// List (SmallVec)
@@ -1745,7 +1745,7 @@ mod tests {
17451745

17461746
let value: MySmallVec = smallvec::smallvec![String::default(); 2];
17471747
let value: &dyn Reflect = &value;
1748-
let info = value.get_represented_type_info().unwrap();
1748+
let info = value.reflect_type_info();
17491749
assert!(info.is::<MySmallVec>());
17501750
}
17511751

@@ -1761,7 +1761,7 @@ mod tests {
17611761
assert_eq!(3, info.capacity());
17621762

17631763
let value: &dyn Reflect = &[1usize, 2usize, 3usize];
1764-
let info = value.get_represented_type_info().unwrap();
1764+
let info = value.reflect_type_info();
17651765
assert!(info.is::<MyArray>());
17661766

17671767
// Cow<'static, str>
@@ -1773,7 +1773,7 @@ mod tests {
17731773
assert_eq!(std::any::type_name::<MyCowStr>(), info.type_path());
17741774

17751775
let value: &dyn Reflect = &Cow::<'static, str>::Owned("Hello!".to_string());
1776-
let info = value.get_represented_type_info().unwrap();
1776+
let info = value.reflect_type_info();
17771777
assert!(info.is::<MyCowStr>());
17781778

17791779
// Cow<'static, [u8]>
@@ -1788,7 +1788,7 @@ mod tests {
17881788
assert_eq!(std::any::type_name::<u8>(), info.item_ty().path());
17891789

17901790
let value: &dyn Reflect = &Cow::<'static, [u8]>::Owned(vec![0, 1, 2, 3]);
1791-
let info = value.get_represented_type_info().unwrap();
1791+
let info = value.reflect_type_info();
17921792
assert!(info.is::<MyCowSlice>());
17931793

17941794
// Map
@@ -1806,7 +1806,7 @@ mod tests {
18061806
assert_eq!(f32::type_path(), info.value_ty().path());
18071807

18081808
let value: &dyn Reflect = &MyMap::new();
1809-
let info = value.get_represented_type_info().unwrap();
1809+
let info = value.reflect_type_info();
18101810
assert!(info.is::<MyMap>());
18111811

18121812
// Value
@@ -1818,7 +1818,7 @@ mod tests {
18181818
assert_eq!(MyValue::type_path(), info.type_path());
18191819

18201820
let value: &dyn Reflect = &String::from("Hello!");
1821-
let info = value.get_represented_type_info().unwrap();
1821+
let info = value.reflect_type_info();
18221822
assert!(info.is::<MyValue>());
18231823
}
18241824

crates/bevy_reflect/src/serde/ser.rs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,8 @@ fn get_serializable<'a, E: Error>(
3838
reflect_value.reflect_type_path()
3939
)));
4040
};
41-
let info = reflect_value.get_represented_type_info().ok_or_else(|| {
42-
Error::custom(format_args!(
43-
"Type '{}' does not represent any type",
44-
reflect_value.reflect_type_path(),
45-
))
46-
})?;
41+
42+
let info = reflect_value.reflect_type_info();
4743

4844
let registration = type_registry.get(info.type_id()).ok_or_else(|| {
4945
Error::custom(format_args!(

examples/reflection/type_data.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ fn main() {
8080
registry.register_type_data::<Zombie, ReflectDamageable>();
8181

8282
// Then at any point we can retrieve the type data from the registry:
83-
let type_id = value.get_represented_type_info().unwrap().type_id();
83+
let type_id = value.reflect_type_info().type_id();
8484
let reflect_damageable = registry
8585
.get_type_data::<ReflectDamageable>(type_id)
8686
.unwrap();
@@ -133,7 +133,7 @@ fn main() {
133133
// Now we can use `ReflectHealth` to convert `dyn Reflect` into `dyn Health`:
134134
let value: Box<dyn Reflect> = Box::new(Skeleton { health: 50 });
135135

136-
let type_id = value.get_represented_type_info().unwrap().type_id();
136+
let type_id = value.reflect_type_info().type_id();
137137
let reflect_health = registry.get_type_data::<ReflectHealth>(type_id).unwrap();
138138

139139
// Type data generated by `#[reflect_trait]` comes with a `get`, `get_mut`, and `get_boxed` method,

0 commit comments

Comments
 (0)