Skip to content

Commit 984ac0b

Browse files
committed
Use match for bidi_class
1 parent 74ffdcc commit 984ac0b

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

unicode_data/src/lib.rs

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)