bevy/crates/bevy_reflect/src
Marcel Müller 6d25545c51
Implement Reflect for Result<T, E> as enum (#13182)
# Objective

- Make `Result<T, E>` implement Reflect such that it is an Enum rather
than a Value
- Fixes #13178

## Solution

- Use the correct macro

## Testing

- Did you test these changes? 

I tried it out locally, and it does what it says on the tin. Not sure
how to test it in context of the crate?


---

## Changelog

### Changed

- Result now uses `ReflectKind::Enum` rather than `ReflectKind::Value`,
allowing for inspection of its constituents

## Migration Guide

`Result<T, E>` has had its `Reflect` implementation changed to align it
with `Option<T>` and its intended semantics: A carrier of either an `Ok`
or `Err` value, and the ability to access it. To achieve this it is no
longer a `ReflectKind::Value` but rather a `ReflectKind::Enum` and as
such carries these changes with it:

For `Result<T, E>`
- Both `T` and `E` no longer require to be `Clone` and now require to be
`FromReflect`
- `<Result<T, E> as Reflect>::reflect_*` now returns a
`ReflectKind::Enum`, so any code that previously relied on it being a
`Value` kind will have to be adapted.
- `Result<T, E>` now implements `Enum`

Since the migration is highly dependent on the previous usage, no
automatic upgrade path can be given.

Signed-off-by: Marcel Müller <neikos@neikos.email>
2024-05-02 18:28:24 +00:00
..
enums Add ReflectKind (#11664) 2024-02-07 00:36:23 +00:00
impls Implement Reflect for Result<T, E> as enum (#13182) 2024-05-02 18:28:24 +00:00
path Fix uses of "it's" vs "its". (#13033) 2024-04-19 18:17:31 +00:00
serde bevy_reflect: Rename UntypedReflectDeserializer to ReflectDeserializer (#12721) 2024-03-26 19:58:29 +00:00
array.rs Add ReflectKind (#11664) 2024-02-07 00:36:23 +00:00
fields.rs reflect: TypePath part 2 (#8768) 2023-10-09 19:33:03 +00:00
from_reflect.rs reflect: TypePath part 2 (#8768) 2023-10-09 19:33:03 +00:00
lib.rs bevy_reflect: Rename UntypedReflectDeserializer to ReflectDeserializer (#12721) 2024-03-26 19:58:29 +00:00
list.rs Add ReflectKind (#11664) 2024-02-07 00:36:23 +00:00
map.rs Fix beta lints (#12980) 2024-04-16 02:46:46 +00:00
reflect.rs Add ReflectKind (#11664) 2024-02-07 00:36:23 +00:00
std_traits.rs fix nightly clippy warnings (#6395) 2022-10-28 21:03:01 +00:00
struct_trait.rs Add ReflectKind (#11664) 2024-02-07 00:36:23 +00:00
tuple_struct.rs Add ReflectKind (#11664) 2024-02-07 00:36:23 +00:00
tuple.rs bevy_reflect: Recursive registration (#5781) 2024-03-04 19:04:10 +00:00
type_info.rs Fix uses of "it's" vs "its". (#13033) 2024-04-19 18:17:31 +00:00
type_path.rs bevy_reflect: Rename UntypedReflectDeserializer to ReflectDeserializer (#12721) 2024-03-26 19:58:29 +00:00
type_registry.rs iter_with_data (#13102) 2024-04-26 02:09:34 +00:00
utility.rs Fix some nightly Clippy lints (#12927) 2024-04-13 02:05:38 +00:00