Skip to content

Make ComponentDescriptor const #3365

Open
@alice-i-cecile

Description

@alice-i-cecile

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

The ComponentDescriptor is always the same for each component type.

What solution would you like?

Create an associated constant on the Component and Resource trait, which stores the existing information.

Constify all of the methods on ComponentDescriptor, then use those to initialize this information at compile-time.

We can also do this for NonSend resources by creating a simple trait for them.

What alternative(s) have you considered?

Enable the feature flags and do it now!

Additional context

This is blocked by several (!) unstable rustc features.

  1. trait bounds other than Sized on const fn parameters are unstable
  2. std::any::type_name is not yet stable as a const fn
  3. TypeId::of is not yet stable as a const fn
  4. function pointer casts are not allowed in constant functions

rust-lang/rust#57563 is the relevant tracking issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-ECSEntities, components, systems, and eventsC-Code-QualityA section of code that is hard to understand or changeC-PerformanceA change motivated by improving speed, memory usage or compile timesD-StraightforwardSimple bug fixes and API improvements, docs, test and examplesS-BlockedThis cannot move forward until something else changes

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions