@@ -41,38 +41,37 @@ pub(crate) const MAX_DECIMAL_BYTES: u32 = 24;
41
41
pub ( crate ) const MAX_DECIMAL_PRECISION : u32 = 38 ;
42
42
43
43
mod _decimal {
44
- use lazy_static :: lazy_static ;
44
+ use once_cell :: sync :: Lazy ;
45
45
46
46
use crate :: spec:: { MAX_DECIMAL_BYTES , MAX_DECIMAL_PRECISION } ;
47
47
48
- lazy_static ! {
49
- // Max precision of bytes, starts from 1
50
- pub ( super ) static ref MAX_PRECISION : [ u32 ; MAX_DECIMAL_BYTES as usize ] = {
51
- let mut ret: [ u32 ; 24 ] = [ 0 ; 24 ] ;
52
- for ( i, prec) in ret. iter_mut( ) . enumerate( ) {
53
- * prec = 2f64 . powi( ( 8 * ( i + 1 ) - 1 ) as i32 ) . log10( ) . floor( ) as u32 ;
54
- }
48
+ // Max precision of bytes, starts from 1
49
+ pub ( super ) static MAX_PRECISION : Lazy < [ u32 ; MAX_DECIMAL_BYTES as usize ] > = Lazy :: new ( || {
50
+ let mut ret: [ u32 ; 24 ] = [ 0 ; 24 ] ;
51
+ for ( i, prec) in ret. iter_mut ( ) . enumerate ( ) {
52
+ * prec = 2f64 . powi ( ( 8 * ( i + 1 ) - 1 ) as i32 ) . log10 ( ) . floor ( ) as u32 ;
53
+ }
55
54
56
- ret
57
- } ;
55
+ ret
56
+ } ) ;
58
57
59
- // Required bytes of precision, starts from 1
60
- pub ( super ) static ref REQUIRED_LENGTH : [ u32 ; MAX_DECIMAL_PRECISION as usize ] = {
61
- let mut ret: [ u32 ; MAX_DECIMAL_PRECISION as usize ] = [ 0 ; MAX_DECIMAL_PRECISION as usize ] ;
58
+ // Required bytes of precision, starts from 1
59
+ pub ( super ) static REQUIRED_LENGTH : Lazy < [ u32 ; MAX_DECIMAL_PRECISION as usize ] > =
60
+ Lazy :: new ( || {
61
+ let mut ret: [ u32 ; MAX_DECIMAL_PRECISION as usize ] =
62
+ [ 0 ; MAX_DECIMAL_PRECISION as usize ] ;
62
63
63
64
for ( i, required_len) in ret. iter_mut ( ) . enumerate ( ) {
64
65
for j in 0 ..MAX_PRECISION . len ( ) {
65
- if MAX_PRECISION [ j] >= ( ( i+ 1 ) as u32 ) {
66
- * required_len = ( j+ 1 ) as u32 ;
66
+ if MAX_PRECISION [ j] >= ( ( i + 1 ) as u32 ) {
67
+ * required_len = ( j + 1 ) as u32 ;
67
68
break ;
68
69
}
69
70
}
70
71
}
71
72
72
73
ret
73
- } ;
74
-
75
- }
74
+ } ) ;
76
75
}
77
76
78
77
#[ derive( Debug , PartialEq , Eq , Clone ) ]
0 commit comments