bevyengine / bevyengine/bevy

Implement Reflect for Box<dyn Reflect>

Open
#3,392 14 comments 5 reactions 0 assignees View on GitHub
A-Reflection C-Usability D-Complex S-Waiting-on-SME
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

Description

## What problem does this solve or what need does it fill?

Boxed Reflect trait objects should themselves be reflectable

## What solution would you like?

Implement `Reflect` for `Box`.

## What alternative(s) have you considered?

None.

## Additional context

Working snippet from @Davier:

```rust
unsafe impl Reflect for Box {
fn type_name(&self) -> &str {
self.deref().type_name()
}

fn any(&self) -> &dyn Any {
self.deref().any()
}

fn any_mut(&mut self) -> &mut dyn Any {
self.deref_mut().any_mut()
}

fn apply(&mut self, value: &dyn Reflect) {
self.deref_mut().apply(value)
}

fn set(&mut self, value: Box) -> Result<(), Box> {
self.deref_mut().set(value)
}

fn reflect_ref(&self) -> ReflectRef {
self.deref().reflect_ref()
}

fn reflect_mut(&mut self) -> ReflectMut {
self.deref_mut().reflect_mut()
}

fn clone_value(&self) -> Box {
self.deref().clone_value()
}

fn reflect_hash(&self) -> Option {
self.deref().reflect_hash()
}

fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option {
self.deref().reflect_partial_eq(value)
}

fn serializable(&self) -> Option {
self.deref().serializable()
}
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.