dimforge / parry

2D and 3D collision-detection library for Rust.
https://parry.rs
Apache License 2.0
567 stars 100 forks source link

`rkyv` feature doesn't seem to work together with `simd-stable` #122

Open Jasper-Bekkers opened 1 year ago

Jasper-Bekkers commented 1 year ago

I'm trying to serialize a GenericTriMesh in a way that's faster then using bincode since we're seeing some pretty big performance issues with it; however it looks like the combination of simd and rkyv doesn't work nicely;

parry3d = { version = "0.13", features = ["rkyv-serialize", "simd-stable"] }

This is leading to the following compile errors;

error[E0277]: the trait bound `WideF32x4: Archive` is not satisfied
  --> C:\Users\Jasper\.cargo\registry\src\github.com-1ecc6299db9ec823\parry3d-0.13.0\src\shape\polyline.rs:16:27
   |
16 |     derive(rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)
   |                           ^^^^^^^^^^^^^^^^^ the trait `Archive` is not implemented for `WideF32x4`
   |
   = help: the following other types implement trait `Archive`:
             ()
             (T0,)
             (T1, T0)
             (T10, T9, T8, T7, T6, T5, T4, T3, T2, T1, T0)
             (T11, T10, T9, T8, T7, T6, T5, T4, T3, T2, T1, T0)
             (T2, T1, T0)
             (T3, T2, T1, T0)
             (T4, T3, T2, T1, T0)
           and 192 others
   = note: required for `OPoint<WideF32x4, Const<3>>` to implement `Archive`
   = note: 4 redundant requirements hidden
   = note: required for `GenericQbvh<u32, DefaultStorage>` to implement `Archive`
   = help: see issue #48214
   = note: this error originates in the derive macro `rkyv::Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0277]: the trait bound `WideF32x4: Archive` is not satisfied
  --> C:\Users\Jasper\.cargo\registry\src\github.com-1ecc6299db9ec823\parry3d-0.13.0\src\shape\polyline.rs:16:46
   |
16 |     derive(rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)
   |                                              ^^^^^^^^^^^^^^^ the trait `Archive` is not implemented for `WideF32x4`
   |
   = help: the following other types implement trait `Archive`:
             ()
             (T0,)
             (T1, T0)
             (T10, T9, T8, T7, T6, T5, T4, T3, T2, T1, T0)
             (T11, T10, T9, T8, T7, T6, T5, T4, T3, T2, T1, T0)
             (T2, T1, T0)
             (T3, T2, T1, T0)
             (T4, T3, T2, T1, T0)
           and 192 others
   = note: required for `OPoint<WideF32x4, Const<3>>` to implement `Archive`
   = note: 4 redundant requirements hidden
   = note: required for `GenericQbvh<u32, DefaultStorage>` to implement `Archive`
   = help: see issue #48214
   = note: this error originates in the derive macro `rkyv::Serialize` (in Nightly builds, run with -Z macro-backtrace for more info)

It seems to be indicating that WideF32x4 in samba doesn't implement the rkyv derives?