@@ -167,13 +167,34 @@ impl Properties {
167167 /// Returns the bidirectional class for the character.
168168 #[ inline( always) ]
169169 pub fn bidi_class ( & self ) -> unicode_bidi:: BidiClass {
170- #[ allow( unsafe_code, reason = "transmute u8 to repr(u8) enum" ) ]
171- unsafe {
172- #[ allow(
173- clippy:: cast_possible_truncation,
174- reason = "bidi class data only occupies BIDI_BITS bits"
175- ) ]
176- core:: mem:: transmute ( self . get ( Self :: BIDI_SHIFT , Self :: BIDI_BITS ) as u8 )
170+ match self . get ( Self :: BIDI_SHIFT , Self :: BIDI_BITS ) as u8 {
171+ 0 => unicode_bidi:: BidiClass :: AL ,
172+ 1 => unicode_bidi:: BidiClass :: AN ,
173+ 2 => unicode_bidi:: BidiClass :: B ,
174+ 3 => unicode_bidi:: BidiClass :: BN ,
175+ 4 => unicode_bidi:: BidiClass :: CS ,
176+ 5 => unicode_bidi:: BidiClass :: EN ,
177+ 6 => unicode_bidi:: BidiClass :: ES ,
178+ 7 => unicode_bidi:: BidiClass :: ET ,
179+ 8 => unicode_bidi:: BidiClass :: FSI ,
180+ 9 => unicode_bidi:: BidiClass :: L ,
181+ 10 => unicode_bidi:: BidiClass :: LRE ,
182+ 11 => unicode_bidi:: BidiClass :: LRI ,
183+ 12 => unicode_bidi:: BidiClass :: LRO ,
184+ 13 => unicode_bidi:: BidiClass :: NSM ,
185+ 14 => unicode_bidi:: BidiClass :: ON ,
186+ 15 => unicode_bidi:: BidiClass :: PDF ,
187+ 16 => unicode_bidi:: BidiClass :: PDI ,
188+ 17 => unicode_bidi:: BidiClass :: R ,
189+ 18 => unicode_bidi:: BidiClass :: RLE ,
190+ 19 => unicode_bidi:: BidiClass :: RLI ,
191+ 20 => unicode_bidi:: BidiClass :: RLO ,
192+ 21 => unicode_bidi:: BidiClass :: S ,
193+ 22 => unicode_bidi:: BidiClass :: WS ,
194+ val => {
195+ debug_assert ! ( false , "Invalid BidiClass: {val}" ) ;
196+ unicode_bidi:: BidiClass :: ON // Other Neutral
197+ }
177198 }
178199 }
179200
0 commit comments