@@ -25,27 +25,26 @@ On the Rust side, we need to start by activating the necessary
25
25
feature - in ` Cargo.toml ` , please make this change:
26
26
27
27
``` diff
28
- - polars = { version = "0.42.0 ", default-features = false }
29
- + polars = { version = "0.42.0 ", features=["dtype-struct"], default-features = false }
28
+ - polars = { version = "0.43.1 ", default-features = false }
29
+ + polars = { version = "0.43.1 ", features=["dtype-struct"], default-features = false }
30
30
```
31
31
32
32
Then, we need to get the schema right.
33
33
34
34
``` Rust
35
35
fn shifted_struct (input_fields : & [Field ]) -> PolarsResult <Field > {
36
36
let field = & input_fields [0 ];
37
- match field . data_type () {
37
+ match field . dtype () {
38
38
DataType :: Struct (fields ) => {
39
39
let mut field_0 = fields [0 ]. clone ();
40
- let name = field_0 . name (). clone ();
41
40
field_0 . set_name (fields [fields . len () - 1 ]. name (). clone ());
42
41
let mut fields = fields [1 .. ]
43
42
. iter ()
44
43
. zip (fields [0 .. fields . len () - 1 ]. iter ())
45
- . map (| (fld , name )| Field :: new (name . name (), fld . data_type (). clone ()))
44
+ . map (| (fld , name )| Field :: new (name . name (). clone () , fld . dtype (). clone ()))
46
45
. collect :: <Vec <_ >>();
47
46
fields . push (field_0 );
48
- Ok (Field :: new (& name , DataType :: Struct (fields )))
47
+ Ok (Field :: new (PlSmallStr :: EMPTY , DataType :: Struct (fields )))
49
48
}
50
49
_ => unreachable! (),
51
50
}
@@ -68,18 +67,18 @@ fn shift_struct(inputs: &[Series]) -> PolarsResult<Series> {
68
67
return Ok (inputs [0 ]. clone ());
69
68
}
70
69
let mut field_0 = fields [0 ]. clone ();
71
- field_0 . rename (fields [fields . len () - 1 ]. name ());
70
+ field_0 . rename (fields [fields . len () - 1 ]. name ()). clone () ;
72
71
let mut fields = fields [1 .. ]
73
72
. iter ()
74
73
. zip (fields [.. fields . len () - 1 ]. iter ())
75
74
. map (| (s , name )| {
76
75
let mut s = s . clone ();
77
- s . rename (name . name ());
76
+ s . rename (name . name (). clone () );
78
77
s
79
78
})
80
79
. collect :: <Vec <_ >>();
81
80
fields . push (field_0 );
82
- StructChunked :: from_series (struct_ . name () , & fields ). map (| ca | ca . into_series ())
81
+ StructChunked :: from_series (PlSmallStr :: EMPTY , & fields ). map (| ca | ca . into_series ())
83
82
}
84
83
```
85
84
0 commit comments