1 // This file is part of ICU4X. For terms of use, please see the file
2 // called LICENSE at the top level of the ICU4X source tree
3 // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
5 use crate::{ule::VarULE, VarZeroSlice, VarZeroVec}
;
8 impl<T
: VarULE
+ ?Sized
> Bake
for VarZeroVec
<'_
, T
> {
9 fn bake(&self, env
: &CrateEnv
) -> TokenStream
{
10 env
.insert("zerovec");
11 let bytes
= self.as_bytes();
12 // Safe because self.as_bytes is a safe input
13 quote
! { unsafe { ::zerovec::VarZeroVec::from_bytes_unchecked(&[#(#bytes),*]) }
}
17 impl<T
: VarULE
+ ?Sized
> Bake
for &VarZeroSlice
<T
> {
18 fn bake(&self, env
: &CrateEnv
) -> TokenStream
{
19 env
.insert("zerovec");
20 let bytes
= self.as_bytes();
21 // Safe because self.as_bytes is a safe input
22 quote
! { unsafe { ::zerovec::VarZeroSlice::from_bytes_unchecked(&[#(#bytes),*]) }
}
31 crate::VarZeroVec
::from_bytes_unchecked(&[
32 2u8, 1u8, 0u8, 22u8, 0u8, 77u8, 1u8, 92u8, 17u8,
40 fn test_baked_slice() {
44 crate::VarZeroSlice
::from_bytes_unchecked(&[
45 2u8, 1u8, 0u8, 22u8, 0u8, 77u8, 1u8, 92u8, 17u8,