Creating Polars Dataframe from Vec<Struct>

Supposing I have a vector of structs like so:

struct Test {
 fn main() {
    let test_vec:Vec<Test> = vec![Test{id:1,amount:3}, Test{id:3,amount:4}];

Is there a way to get this into a polars dataframe with the column names being the struct fields?

Hoping to get an output as follows:

   id  amount
0   1       3
1   3       4


  • After a lot of head banging, I found the following solution.

    If you have a vector of a custom struct, to get it into a Polars dataframe you can do the following:

    // 1. Derive serde::Serialize for your struct
    struct Test {
    // (Adding new method here for quality of life).
    impl Test {
        fn new(id:u32, amount:u32) -> Self{
    // 2. Jsonify your struct Vec
    let test_vec:Vec<Test> = vec![Test::new(1,3), Test::new(3,4)];
    let json = serde_json::to_string(&test_vec).unwrap();
    // 3. Create cursor from json 
    let cursor = Cursor::new(json);
    // 4. Create polars DataFrame from reading cursor as json
    let df = JsonReader::new(cursor)