kyren / gc-arena

Incremental garbage collection from safe Rust
Creative Commons Zero v1.0 Universal
436 stars 36 forks source link

Remove `Collect + Sized` on `Rootable::Root` type. #102

Closed kyren closed 3 days ago

kyren commented 6 days ago

Since we are using Gc pointers for DynamicRootSet again, we need to relax the way the Rootable macro works so that it can work for Gc<dyn Trait> and Gc pointers which have been cast to other types.

This is a breaking change (ofc), but hopefully it should not cause too much churn?

We could add a trait alias for Sized + Collect Root types to make things much easier, but I think the only way to have an actually helpful trait alias is to use the very recently stable associated type bounds.

I think it's probably just not a big deal unless you do deep tricks with Rootable (like piccolo's Any).

This also removes the 'static bound on Rootable because absolutely nothing was using it (piccolo does, but it can add it itself).

kyren commented 6 days ago

Fixing piccolo after this was not a big deal in the slightest, I don't know where my head was when I was testing #53.