`<PackedStorage<T> as UnknownComponentStorage>::transfer_component` is unsound
Ouverte
- Langage dominant
- Rust
- Étoiles
- 1.7k
- Forks
- 140
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
This implementation is unsound:
https://github.com/amethyst/legion/blob/0d0a53953465ca73e6f9231ecbae9044bf4b4389/src/internals/storage/packed.rs#L421-L432
because this compiles:
```rust
fn soundness_hole() {
let mut a: PackedStorage = Default::default();
let mut b: PackedStorage = Default::default();
let a: &mut dyn UnknownComponentStorage = &mut a;
a.transfer_component(ArchetypeIndex(0), ComponentIndex(0), ArchetypeIndex(0), &mut b);
}
```
Getting this UB outside of lib is tricky, however unsoundness inside the lib itself is bad too.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Évaluation
Cette issue n'a pas encore été évaluée.