@@ -3,17 +3,16 @@ pub mod bitenc;
3
3
pub mod samples;
4
4
5
5
use crate :: bitenc:: BitEnc ;
6
- use std:: sync:: LazyLock ;
7
6
8
7
pub const DNA_BASES : [ u8 ; 5 ] = * b"ACGTN" ;
9
8
pub const IUPAC_BASES : [ u8 ; 15 ] = * b"ACGTMRWSYKVHDBN" ;
10
9
11
- pub static BASE_A : LazyLock < usize > = LazyLock :: new ( || 1 ) ;
12
- pub static BASE_C : LazyLock < usize > = LazyLock :: new ( || 2 ) ;
13
- pub static BASE_G : LazyLock < usize > = LazyLock :: new ( || 4 ) ;
14
- pub static BASE_T : LazyLock < usize > = LazyLock :: new ( || 8 ) ;
15
- pub static BASE_N : LazyLock < usize > = LazyLock :: new ( || 15 ) ;
16
- pub static DNA_MASKS : LazyLock < [ u8 ; 256 ] > = LazyLock :: new ( || {
10
+ pub const BASE_A : usize = 1 ;
11
+ pub const BASE_C : usize = 2 ;
12
+ pub const BASE_G : usize = 4 ;
13
+ pub const BASE_T : usize = 8 ;
14
+ pub const BASE_B : usize = 15 ;
15
+ pub const DNA_MASKS : [ u8 ; 256 ] = {
17
16
let mut masks = [ 0 ; 256 ] ;
18
17
let ( a, c, g, t) = ( 1 , 2 , 4 , 8 ) ;
19
18
masks[ 'A' as usize ] = a;
@@ -23,8 +22,8 @@ pub static DNA_MASKS: LazyLock<[u8; 256]> = LazyLock::new(|| {
23
22
masks[ 'U' as usize ] = t;
24
23
masks[ 'N' as usize ] = a | c | g | t;
25
24
masks
26
- } ) ;
27
- pub static IUPAC_MASKS : LazyLock < [ u8 ; 256 ] > = LazyLock :: new ( || {
25
+ } ;
26
+ pub const IUPAC_MASKS : [ u8 ; 256 ] = {
28
27
let mut masks = [ 0 ; 256 ] ;
29
28
let ( a, c, g, t) = ( 1 , 2 , 4 , 8 ) ;
30
29
masks[ 'A' as usize ] = a;
@@ -44,7 +43,7 @@ pub static IUPAC_MASKS: LazyLock<[u8; 256]> = LazyLock::new(|| {
44
43
masks[ 'B' as usize ] = c | g | t;
45
44
masks[ 'N' as usize ] = a | c | g | t;
46
45
masks
47
- } ) ;
46
+ } ;
48
47
49
48
#[ must_use]
50
49
pub fn encode ( bases : & [ u8 ] ) -> BitEnc {
@@ -54,7 +53,11 @@ pub fn encode(bases: &[u8]) -> BitEnc {
54
53
IUPAC_MASKS [ b'N' as usize ]
55
54
} else {
56
55
let value = base. to_ascii_uppercase ( ) as usize ;
57
- if value < 256 { IUPAC_MASKS [ value] } else { 0 }
56
+ if value < 256 {
57
+ IUPAC_MASKS [ value]
58
+ } else {
59
+ 0
60
+ }
58
61
} ;
59
62
vec. push ( bit) ;
60
63
}
0 commit comments