Open sffc opened 2 years ago
Example of using the const function to build a ZeroSlice: https://github.com/unicode-org/icu4x/blob/269b807d9f0eda2905efab6c9e6bd30d8c243a80/utils/codepointtrie/benches/tries/gc_small.rs
The first step for this issue is to migrate all users of from_slice_or_alloc
to use the const function if possible.
With Rust 1.61 and https://github.com/unicode-org/icu4x/pull/1926, we will now be able to do the following:
zeroslice!
macroconst
constructorsEqULE
trait to use the new convenience macro, and then removeEqULE
For the macro, you should be able to write
which desugars to
where
<cb>
is a const function that converts from an aligned to unaligned array (i.e.AsULE::to_unaligned
); it would be nice to have a trait for this but we still can't use trait functions in a const context. We can probably write it such that the function only needs to convert from a singleT
to a singleT::ULE
and call it in a loop. The big thing is that we can writeZeroSlice::from_ule_slice
in a const context now.