@@ -10,22 +10,22 @@ fn range_search<
10
10
> (
11
11
needle : u32 ,
12
12
chunk_idx_map : & [ u8 ; N ] ,
13
- ( last_chunk_idx, last_chunk_mapping ) : ( u16 , u8 ) ,
13
+ last_chunk_idx : u16 ,
14
14
bitset_chunk_idx : & [ [ u8 ; CHUNK_SIZE ] ; N1 ] ,
15
15
bitset_canonical : & [ u64 ; CANONICAL ] ,
16
16
bitset_canonicalized : & [ ( u8 , u8 ) ; CANONICALIZED ] ,
17
17
) -> bool {
18
18
let bucket_idx = ( needle / 64 ) as usize ;
19
19
let chunk_map_idx = bucket_idx / CHUNK_SIZE ;
20
20
let chunk_piece = bucket_idx % CHUNK_SIZE ;
21
- let chunk_idx = if chunk_map_idx >= N {
22
- if chunk_map_idx == last_chunk_idx as usize {
23
- last_chunk_mapping
24
- } else {
25
- return false ;
26
- }
27
- } else {
21
+ // The last entry of `chunk_idx_map` actually should be at `last_chunk_idx`,
22
+ // so we need to remap it
23
+ let chunk_idx = if chunk_map_idx < ( chunk_idx_map. len ( ) - 1 ) {
28
24
chunk_idx_map[ chunk_map_idx]
25
+ } else if chunk_map_idx == last_chunk_idx as usize {
26
+ chunk_idx_map[ chunk_idx_map. len ( ) - 1 ]
27
+ } else {
28
+ return false ;
29
29
} ;
30
30
let idx = bitset_chunk_idx[ ( chunk_idx as usize ) ] [ chunk_piece] as usize ;
31
31
let word = if idx < CANONICAL {
@@ -54,8 +54,8 @@ pub const UNICODE_VERSION: (u32, u32, u32) = (13, 0, 0);
54
54
55
55
#[ rustfmt:: skip]
56
56
pub mod alphabetic {
57
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 393 , 13 ) ;
58
- static BITSET_CHUNKS_MAP : [ u8 ; 393 ] = [
57
+ const BITSET_LAST_CHUNK_MAP : u16 = 393 ;
58
+ static BITSET_CHUNKS_MAP : [ u8 ; 394 ] = [
59
59
61 , 18 , 2 , 35 , 46 , 39 , 38 , 74 , 37 , 25 , 70 , 34 , 36 , 73 , 66 , 5 , 52 , 58 , 54 , 58 , 58 , 58 , 69 ,
60
60
64 , 43 , 58 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 7 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 ,
61
61
6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 10 , 6 , 6 , 23 ,
@@ -70,7 +70,7 @@ pub mod alphabetic {
70
70
6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 ,
71
71
6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 21 , 6 , 6 , 6 , 6 ,
72
72
6 , 6 , 6 , 15 , 72 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 3 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 8 ,
73
- 58 , 58 , 58 , 58 , 58 , 58 , 6 , 62 , 58 , 58 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 ,
73
+ 58 , 58 , 58 , 58 , 58 , 58 , 6 , 62 , 58 , 58 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 13 ,
74
74
] ;
75
75
static BITSET_INDEX_CHUNKS : [ [ u8 ; 8 ] ; 75 ] = [
76
76
[ 0 , 252 , 121 , 172 , 14 , 172 , 172 , 172 ] , [ 13 , 51 , 125 , 172 , 79 , 35 , 166 , 172 ] ,
@@ -312,8 +312,8 @@ pub mod alphabetic {
312
312
313
313
#[ rustfmt:: skip]
314
314
pub mod case_ignorable {
315
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 1792 , 2 ) ;
316
- static BITSET_CHUNKS_MAP : [ u8 ; 250 ] = [
315
+ const BITSET_LAST_CHUNK_MAP : u16 = 1792 ;
316
+ static BITSET_CHUNKS_MAP : [ u8 ; 251 ] = [
317
317
14 , 28 , 47 , 22 , 19 , 11 , 4 , 13 , 9 , 40 , 39 , 32 , 49 , 23 , 15 , 36 , 18 , 39 , 39 , 39 , 39 , 39 , 27 ,
318
318
26 , 12 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 ,
319
319
39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 ,
@@ -324,7 +324,7 @@ pub mod case_ignorable {
324
324
39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 44 , 39 , 35 , 39 , 39 ,
325
325
39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 ,
326
326
39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 29 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 , 39 ,
327
- 34 , 48 , 39 , 39 , 39 , 0 , 39 , 39 , 21 , 43 , 39 , 39 , 45 , 39 , 39 , 39 , 39 , 37 ,
327
+ 34 , 48 , 39 , 39 , 39 , 0 , 39 , 39 , 21 , 43 , 39 , 39 , 45 , 39 , 39 , 39 , 39 , 37 , 2 ,
328
328
] ;
329
329
static BITSET_INDEX_CHUNKS : [ [ u8 ; 8 ] ; 52 ] = [
330
330
[ 3 , 75 , 88 , 142 , 142 , 142 , 142 , 142 ] , [ 5 , 110 , 38 , 181 , 142 , 142 , 12 , 182 ] ,
@@ -503,14 +503,14 @@ pub mod case_ignorable {
503
503
504
504
#[ rustfmt:: skip]
505
505
pub mod cased {
506
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 124 , 12 ) ;
507
- static BITSET_CHUNKS_MAP : [ u8 ; 123 ] = [
506
+ const BITSET_LAST_CHUNK_MAP : u16 = 124 ;
507
+ static BITSET_CHUNKS_MAP : [ u8 ; 124 ] = [
508
508
4 , 0 , 18 , 18 , 6 , 18 , 18 , 9 , 5 , 8 , 18 , 3 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 ,
509
509
18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 14 , 15 , 18 , 18 , 18 , 18 ,
510
510
18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 17 , 16 , 18 , 1 , 18 , 10 , 18 , 18 ,
511
511
7 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 13 , 18 ,
512
512
18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 ,
513
- 18 , 2 , 18 , 18 , 18 , 18 , 11 ,
513
+ 18 , 2 , 18 , 18 , 18 , 18 , 11 , 12 ,
514
514
] ;
515
515
static BITSET_INDEX_CHUNKS : [ [ u8 ; 16 ] ; 19 ] = [
516
516
[ 5 , 5 , 7 , 5 , 50 , 10 , 40 , 58 , 58 , 58 , 58 , 58 , 58 , 58 , 58 , 58 ] ,
@@ -594,9 +594,9 @@ pub mod cased {
594
594
595
595
#[ rustfmt:: skip]
596
596
pub mod cc {
597
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 2 , 0 ) ;
598
- static BITSET_CHUNKS_MAP : [ u8 ; 2 ] = [
599
- 0 , 1 ,
597
+ const BITSET_LAST_CHUNK_MAP : u16 = 2 ;
598
+ static BITSET_CHUNKS_MAP : [ u8 ; 3 ] = [
599
+ 0 , 1 , 0 ,
600
600
] ;
601
601
static BITSET_INDEX_CHUNKS : [ [ u8 ; 1 ] ; 3 ] = [
602
602
[ 0 ] , [ 1 ] , [ 2 ] ,
@@ -623,8 +623,8 @@ pub mod cc {
623
623
624
624
#[ rustfmt:: skip]
625
625
pub mod grapheme_extend {
626
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 1792 , 3 ) ;
627
- static BITSET_CHUNKS_MAP : [ u8 ; 245 ] = [
626
+ const BITSET_LAST_CHUNK_MAP : u16 = 1792 ;
627
+ static BITSET_CHUNKS_MAP : [ u8 ; 246 ] = [
628
628
34 , 30 , 41 , 44 , 17 , 11 , 0 , 12 , 9 , 36 , 34 , 29 , 43 , 20 , 13 , 34 , 21 , 34 , 34 , 34 , 34 , 34 , 26 ,
629
629
34 , 16 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 ,
630
630
34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 ,
@@ -635,7 +635,7 @@ pub mod grapheme_extend {
635
635
34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 40 , 34 , 33 , 34 ,
636
636
34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 ,
637
637
34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 24 , 34 , 34 , 34 , 34 , 34 , 34 , 34 , 34 ,
638
- 34 , 32 , 42 , 34 , 34 , 34 , 1 , 34 , 34 , 19 , 38 , 34 , 34 , 39 ,
638
+ 34 , 32 , 42 , 34 , 34 , 34 , 1 , 34 , 34 , 19 , 38 , 34 , 34 , 39 , 3 ,
639
639
] ;
640
640
static BITSET_INDEX_CHUNKS : [ [ u8 ; 8 ] ; 45 ] = [
641
641
[ 1 , 85 , 27 , 86 , 34 , 84 , 100 , 88 ] , [ 4 , 60 , 71 , 120 , 120 , 120 , 120 , 120 ] ,
@@ -785,12 +785,12 @@ pub mod grapheme_extend {
785
785
786
786
#[ rustfmt:: skip]
787
787
pub mod lowercase {
788
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 122 , 5 ) ;
789
- static BITSET_CHUNKS_MAP : [ u8 ; 118 ] = [
788
+ const BITSET_LAST_CHUNK_MAP : u16 = 122 ;
789
+ static BITSET_CHUNKS_MAP : [ u8 ; 119 ] = [
790
790
16 , 2 , 9 , 9 , 4 , 9 , 9 , 15 , 3 , 12 , 9 , 1 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 ,
791
791
9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 11 , 7 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 ,
792
792
9 , 9 , 9 , 8 , 10 , 9 , 0 , 9 , 14 , 9 , 9 , 13 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 ,
793
- 9 , 9 , 6 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 17 ,
793
+ 9 , 9 , 6 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 17 , 5 ,
794
794
] ;
795
795
static BITSET_INDEX_CHUNKS : [ [ u8 ; 16 ] ; 18 ] = [
796
796
[ 10 , 55 , 52 , 6 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 ] ,
@@ -886,8 +886,8 @@ pub mod lowercase {
886
886
887
887
#[ rustfmt:: skip]
888
888
pub mod n {
889
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 253 , 21 ) ;
890
- static BITSET_CHUNKS_MAP : [ u8 ; 249 ] = [
889
+ const BITSET_LAST_CHUNK_MAP : u16 = 253 ;
890
+ static BITSET_CHUNKS_MAP : [ u8 ; 250 ] = [
891
891
45 , 19 , 19 , 39 , 23 , 40 , 6 , 37 , 33 , 17 , 19 , 12 , 42 , 32 , 41 , 19 , 8 , 19 , 2 , 16 , 19 , 19 , 13 ,
892
892
19 , 1 , 43 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 ,
893
893
19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 ,
@@ -898,7 +898,7 @@ pub mod n {
898
898
19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 38 , 19 , 30 , 19 ,
899
899
19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 ,
900
900
19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 , 19 ,
901
- 19 , 19 , 27 , 19 , 18 , 19 , 19 , 19 , 19 , 22 , 26 , 19 , 19 , 29 , 19 , 3 , 19 , 24 ,
901
+ 19 , 19 , 27 , 19 , 18 , 19 , 19 , 19 , 19 , 22 , 26 , 19 , 19 , 29 , 19 , 3 , 19 , 24 , 21 ,
902
902
] ;
903
903
static BITSET_INDEX_CHUNKS : [ [ u8 ; 8 ] ; 47 ] = [
904
904
[ 12 , 52 , 44 , 44 , 44 , 44 , 44 , 44 ] , [ 27 , 44 , 44 , 44 , 44 , 44 , 67 , 44 ] ,
@@ -993,13 +993,13 @@ pub mod n {
993
993
994
994
#[ rustfmt:: skip]
995
995
pub mod uppercase {
996
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 124 , 3 ) ;
997
- static BITSET_CHUNKS_MAP : [ u8 ; 123 ] = [
996
+ const BITSET_LAST_CHUNK_MAP : u16 = 124 ;
997
+ static BITSET_CHUNKS_MAP : [ u8 ; 124 ] = [
998
998
12 , 15 , 5 , 5 , 0 , 5 , 5 , 2 , 4 , 11 , 5 , 14 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 ,
999
999
5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 8 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 ,
1000
1000
5 , 5 , 5 , 6 , 5 , 13 , 5 , 10 , 5 , 5 , 1 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 ,
1001
1001
5 , 7 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 16 , 5 , 5 ,
1002
- 5 , 5 , 9 ,
1002
+ 5 , 5 , 9 , 3 ,
1003
1003
] ;
1004
1004
static BITSET_INDEX_CHUNKS : [ [ u8 ; 16 ] ; 17 ] = [
1005
1005
[ 41 , 41 , 5 , 33 , 41 , 41 , 41 , 41 , 41 , 41 , 41 , 41 , 41 , 41 , 5 , 0 ] ,
@@ -1083,9 +1083,9 @@ pub mod uppercase {
1083
1083
1084
1084
#[ rustfmt:: skip]
1085
1085
pub mod white_space {
1086
- static BITSET_LAST_CHUNK_MAP : ( u16 , u8 ) = ( 32 , 3 ) ;
1087
- static BITSET_CHUNKS_MAP : [ u8 ; 22 ] = [
1088
- 0 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 2 , 2 , 2 , 2 , 2 , 1 ,
1086
+ const BITSET_LAST_CHUNK_MAP : u16 = 32 ;
1087
+ static BITSET_CHUNKS_MAP : [ u8 ; 23 ] = [
1088
+ 0 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 2 , 2 , 2 , 2 , 2 , 1 , 3 ,
1089
1089
] ;
1090
1090
static BITSET_INDEX_CHUNKS : [ [ u8 ; 6 ] ; 4 ] = [
1091
1091
[ 1 , 4 , 2 , 4 , 4 , 4 ] , [ 4 , 4 , 0 , 3 , 4 , 4 ] , [ 4 , 4 , 4 , 4 , 4 , 4 ] , [ 5 , 4 , 4 , 4 , 4 , 4 ] ,
0 commit comments