1

compiler: allow transmute of ZST arrays with generics by dvdhrm · Pull Request #...

 1 month ago
source link: https://github.com/rust-lang/rust/pull/114009
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Conversation

Contributor

Extend the SizeSkeleton evaluator to shortcut zero-sized arrays, thus considering [T; 0] to have a compile-time fixed-size of 0.

The existing evaluator already deals with generic arrays under the feature-guard transmute_const_generics. However, it merely allows comparing fixed-size types with fixed-size types, and generic types with generic types. For generic types, it merely compares whether their arguments match (ordering them first). Even if their exact sizes are not known at compile time, it can ensure that they will eventually be the same.

This patch extends this by shortcutting the size-evaluation of zero sized arrays and thus allowing size comparisons of () with [T; 0], where one contains generics and the other does not.

This code is guarded by transmute_const_generics (#109929), even though it is unclear whether it should be. However, this assumes that a separate stabilization PR is required to move this out of the feature guard.

Initially reported in #98104.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK