@@ -9,8 +9,6 @@ use polars_io::RowIndex;
9
9
use std:: any:: Any ;
10
10
use std:: collections:: HashMap ;
11
11
12
- use smartstring:: alias:: String as SmartString ;
13
-
14
12
#[ derive( Debug ) ]
15
13
pub struct Wrap < T : ?Sized > ( pub T ) ;
16
14
@@ -50,7 +48,7 @@ impl ToSeries for Array {
50
48
let av: Wrap < AnyValue > = self . get ( i) . unwrap ( ) . unwrap_or ( Wrap ( AnyValue :: Null ) ) ;
51
49
v. push ( av. 0 ) ;
52
50
}
53
- Series :: new ( "" , v)
51
+ Series :: new ( PlSmallStr :: EMPTY , v)
54
52
}
55
53
}
56
54
@@ -64,7 +62,7 @@ impl ToSeries for JsUnknown {
64
62
let av = AnyValue :: from_js ( unknown) . unwrap ( ) ;
65
63
v. push ( av) ;
66
64
}
67
- Series :: new ( "" , v)
65
+ Series :: new ( PlSmallStr :: EMPTY , v)
68
66
}
69
67
}
70
68
@@ -174,7 +172,7 @@ impl FromNapiValue for Wrap<StringChunked> {
174
172
unsafe fn from_napi_value ( env : sys:: napi_env , napi_val : sys:: napi_value ) -> JsResult < Self > {
175
173
let arr = Array :: from_napi_value ( env, napi_val) ?;
176
174
let len = arr. len ( ) as usize ;
177
- let mut builder = StringChunkedBuilder :: new ( "" , len) ;
175
+ let mut builder = StringChunkedBuilder :: new ( PlSmallStr :: EMPTY , len) ;
178
176
for i in 0 ..len {
179
177
match arr. get :: < String > ( i as u32 ) {
180
178
Ok ( val) => match val {
@@ -192,7 +190,7 @@ impl FromNapiValue for Wrap<BooleanChunked> {
192
190
unsafe fn from_napi_value ( env : sys:: napi_env , napi_val : sys:: napi_value ) -> JsResult < Self > {
193
191
let arr = Array :: from_napi_value ( env, napi_val) ?;
194
192
let len = arr. len ( ) as usize ;
195
- let mut builder = BooleanChunkedBuilder :: new ( "" , len) ;
193
+ let mut builder = BooleanChunkedBuilder :: new ( PlSmallStr :: EMPTY , len) ;
196
194
for i in 0 ..len {
197
195
match arr. get :: < bool > ( i as u32 ) {
198
196
Ok ( val) => match val {
@@ -211,7 +209,7 @@ impl FromNapiValue for Wrap<Float32Chunked> {
211
209
unsafe fn from_napi_value ( env : sys:: napi_env , napi_val : sys:: napi_value ) -> JsResult < Self > {
212
210
let arr = Array :: from_napi_value ( env, napi_val) ?;
213
211
let len = arr. len ( ) as usize ;
214
- let mut builder = PrimitiveChunkedBuilder :: < Float32Type > :: new ( "" , len) ;
212
+ let mut builder = PrimitiveChunkedBuilder :: < Float32Type > :: new ( PlSmallStr :: EMPTY , len) ;
215
213
for i in 0 ..len {
216
214
match arr. get :: < f64 > ( i as u32 ) {
217
215
Ok ( val) => match val {
@@ -234,7 +232,7 @@ macro_rules! impl_chunked {
234
232
) -> JsResult <Self > {
235
233
let arr = Array :: from_napi_value( env, napi_val) ?;
236
234
let len = arr. len( ) as usize ;
237
- let mut builder = PrimitiveChunkedBuilder :: <$type>:: new( "" , len) ;
235
+ let mut builder = PrimitiveChunkedBuilder :: <$type>:: new( PlSmallStr :: EMPTY , len) ;
238
236
for i in 0 ..len {
239
237
match arr. get:: <$native>( i as u32 ) {
240
238
Ok ( val) => match val {
@@ -258,7 +256,7 @@ impl FromNapiValue for Wrap<ChunkedArray<UInt64Type>> {
258
256
unsafe fn from_napi_value ( env : sys:: napi_env , napi_val : sys:: napi_value ) -> JsResult < Self > {
259
257
let arr = Array :: from_napi_value ( env, napi_val) ?;
260
258
let len = arr. len ( ) as usize ;
261
- let mut builder = PrimitiveChunkedBuilder :: < UInt64Type > :: new ( "" , len) ;
259
+ let mut builder = PrimitiveChunkedBuilder :: < UInt64Type > :: new ( PlSmallStr :: EMPTY , len) ;
262
260
for i in 0 ..len {
263
261
match arr. get :: < BigInt > ( i as u32 ) {
264
262
Ok ( val) => match val {
@@ -631,11 +629,7 @@ impl FromNapiValue for Wrap<DataType> {
631
629
match ty {
632
630
ValueType :: Object => {
633
631
let obj = Object :: from_napi_value ( env, napi_val) ?;
634
- let variant = if let Some ( variant) = obj. get :: < _ , String > ( "variant" ) ? {
635
- variant
636
- } else {
637
- "" . into ( )
638
- } ;
632
+ let variant = obj. get :: < _ , String > ( "variant" ) ?. map_or ( "" . into ( ) , |v| v) ;
639
633
640
634
let dtype = match variant. as_ref ( ) {
641
635
"Int8" => DataType :: Int8 ,
@@ -688,7 +682,7 @@ impl FromNapiValue for Wrap<DataType> {
688
682
let obj = Object :: from_napi_value ( env, napi_dt) ?;
689
683
let name = obj. get :: < _ , String > ( "name" ) ?. unwrap ( ) ;
690
684
let dt = obj. get :: < _ , Wrap < DataType > > ( "dtype" ) ?. unwrap ( ) ;
691
- let fld = Field :: new ( & name, dt. 0 ) ;
685
+ let fld = Field :: new ( name. into ( ) , dt. 0 ) ;
692
686
fldvec. push ( fld) ;
693
687
}
694
688
DataType :: Struct ( fldvec)
@@ -725,7 +719,7 @@ impl FromNapiValue for Wrap<Schema> {
725
719
let napi_val = Object :: to_napi_value ( env, value) ?;
726
720
let dtype = Wrap :: < DataType > :: from_napi_value ( env, napi_val) ?;
727
721
728
- Ok ( Field :: new ( key, dtype. 0 ) )
722
+ Ok ( Field :: new ( key. into ( ) , dtype. 0 ) )
729
723
} )
730
724
. collect :: < Result < Schema > > ( ) ?,
731
725
) )
@@ -806,11 +800,7 @@ impl FromNapiValue for Wrap<SortOptions> {
806
800
unsafe fn from_napi_value ( env : sys:: napi_env , napi_val : sys:: napi_value ) -> napi:: Result < Self > {
807
801
let obj = Object :: from_napi_value ( env, napi_val) ?;
808
802
let descending = obj. get :: < _ , bool > ( "descending" ) ?. unwrap ( ) ;
809
- let nulls_last = if let Some ( nulls_last) = obj. get :: < _ , bool > ( "nulls_last" ) ? {
810
- nulls_last
811
- } else {
812
- obj. get :: < _ , bool > ( "nullsLast" ) ?. unwrap_or ( false )
813
- } ;
803
+ let nulls_last = obj. get :: < _ , bool > ( "nulls_last" ) ?. map_or ( obj. get :: < _ , bool > ( "nullsLast" ) ?. unwrap_or ( false ) , |n| n) ;
814
804
let multithreaded = obj. get :: < _ , bool > ( "multithreaded" ) ?. unwrap ( ) ;
815
805
let maintain_order: bool = obj. get :: < _ , bool > ( "maintain_order" ) ?. unwrap ( ) ;
816
806
let options = SortOptions {
@@ -957,8 +947,7 @@ impl ToNapiValue for Wrap<DataType> {
957
947
let mut inner_arr = env_ctx. create_array ( 2 ) ?;
958
948
959
949
inner_arr. set ( 0 , tu. to_ascii ( ) ) ?;
960
- inner_arr. set ( 1 , tz) ?;
961
-
950
+ inner_arr. set ( 1 , tz. as_ref ( ) . map_or ( "" , |s| s. as_str ( ) ) ) ?;
962
951
obj. set ( "variant" , "Datetime" ) ?;
963
952
obj. set ( "inner" , inner_arr) ?;
964
953
Object :: to_napi_value ( env, obj)
@@ -974,7 +963,7 @@ impl ToNapiValue for Wrap<DataType> {
974
963
let mut js_flds = env_ctx. create_array ( flds. len ( ) as u32 ) ?;
975
964
for ( idx, fld) in flds. iter ( ) . enumerate ( ) {
976
965
let name = fld. name ( ) . clone ( ) ;
977
- let dtype = Wrap ( fld. data_type ( ) . clone ( ) ) ;
966
+ let dtype = Wrap ( fld. dtype ( ) . clone ( ) ) ;
978
967
let mut fld_obj = env_ctx. create_object ( ) ?;
979
968
fld_obj. set ( "name" , name. to_string ( ) ) ?;
980
969
fld_obj. set ( "dtype" , dtype) ?;
@@ -1016,11 +1005,11 @@ impl ToNapiValue for Wrap<DataType> {
1016
1005
impl FromNapiValue for Wrap < NullValues > {
1017
1006
unsafe fn from_napi_value ( env : sys:: napi_env , napi_val : sys:: napi_value ) -> JsResult < Self > {
1018
1007
if let Ok ( s) = String :: from_napi_value ( env, napi_val) {
1019
- Ok ( Wrap ( NullValues :: AllColumnsSingle ( s) ) )
1008
+ Ok ( Wrap ( NullValues :: AllColumnsSingle ( s. into ( ) ) ) )
1020
1009
} else if let Ok ( s) = Vec :: < String > :: from_napi_value ( env, napi_val) {
1021
- Ok ( Wrap ( NullValues :: AllColumns ( s) ) )
1010
+ Ok ( Wrap ( NullValues :: AllColumns ( s. into_iter ( ) . map ( PlSmallStr :: from_string ) . collect ( ) ) ) )
1022
1011
} else if let Ok ( s) = HashMap :: < String , String > :: from_napi_value ( env, napi_val) {
1023
- let null_values: Vec < ( String , String ) > = s. into_iter ( ) . collect ( ) ;
1012
+ let null_values = s. into_iter ( ) . map ( |a| ( PlSmallStr :: from_string ( a . 0 ) , PlSmallStr :: from_string ( a . 1 ) ) ) . collect :: < Vec < ( PlSmallStr , PlSmallStr ) > > ( ) ;
1024
1013
Ok ( Wrap ( NullValues :: Named ( null_values) ) )
1025
1014
} else {
1026
1015
Err (
@@ -1034,10 +1023,10 @@ impl FromNapiValue for Wrap<NullValues> {
1034
1023
impl ToNapiValue for Wrap < NullValues > {
1035
1024
unsafe fn to_napi_value ( env : sys:: napi_env , val : Self ) -> napi:: Result < sys:: napi_value > {
1036
1025
match val. 0 {
1037
- NullValues :: AllColumnsSingle ( s) => String :: to_napi_value ( env, s) ,
1038
- NullValues :: AllColumns ( arr) => Vec :: < String > :: to_napi_value ( env, arr) ,
1026
+ NullValues :: AllColumnsSingle ( s) => String :: to_napi_value ( env, s. to_string ( ) ) ,
1027
+ NullValues :: AllColumns ( arr) => Vec :: < String > :: to_napi_value ( env, arr. iter ( ) . map ( |x| x . to_string ( ) ) . collect ( ) ) ,
1039
1028
NullValues :: Named ( obj) => {
1040
- let o: HashMap < String , String > = obj. into_iter ( ) . collect ( ) ;
1029
+ let o: HashMap < String , String > = obj. into_iter ( ) . map ( |s| ( s . 0 . to_string ( ) , s . 1 . to_string ( ) ) ) . collect :: < HashMap < String , String > > ( ) ;
1041
1030
HashMap :: < String , String > :: to_napi_value ( env, o)
1042
1031
}
1043
1032
}
@@ -1242,12 +1231,12 @@ pub(crate) fn parse_fill_null_strategy(
1242
1231
Ok ( parsed)
1243
1232
}
1244
1233
1245
- pub ( crate ) fn strings_to_smartstrings < I , S > ( container : I ) -> Vec < SmartString >
1234
+ pub ( crate ) fn strings_to_pl_smallstr < I , S > ( container : I ) -> Vec < PlSmallStr >
1246
1235
where
1247
1236
I : IntoIterator < Item = S > ,
1248
1237
S : AsRef < str > ,
1249
1238
{
1250
- container. into_iter ( ) . map ( |s| s. as_ref ( ) . into ( ) ) . collect ( )
1239
+ container. into_iter ( ) . map ( |s| PlSmallStr :: from_str ( s. as_ref ( ) ) ) . collect ( )
1251
1240
}
1252
1241
1253
1242
pub ( crate ) fn strings_to_selector < I , S > ( container : I ) -> Vec < Selector >
0 commit comments