polars-rows-iter 0.13.1

Library for easy and convenient row iteration of polars dataframes
Documentation
#![allow(dead_code)]

use polars::prelude::*;
use polars_rows_iter::*;

mod column_names {
    pub const COLUMN_D: &str = "col_d";
}

#[derive(Debug, FromDataFrameRow)]
struct MyRow<A, B, C, D> {
    col_a: A,
    #[column("col_b")]
    b: B,
    col_c: C,
    #[column(column_names::COLUMN_D)]
    d: D,
}

fn create_dataframe() -> PolarsResult<DataFrame> {
    df!(
        "col_a" => [1i32, 2, 3, 4, 5],
        "col_b" => ["a", "b", "c", "d", "e"],
        "col_c" => ["A", "B", "C", "D", "E"],
        "col_d" => [Some(1.0f64), None, None, Some(2.0), Some(3.0)]
    )
}

fn run() -> PolarsResult<()> {
    let df = create_dataframe()?;

    let rows_iter = df.rows_iter::<MyRow<i32, &str, String, Option<f64>>>()?;

    for row in rows_iter {
        let row = row?;

        println!("{row:?}");
    }

    Ok(())
}

fn main() {
    run().unwrap()
}