#![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> {
col_a: i32,
#[column("col_b")]
b: &'a str,
col_c: String,
#[column(column_names::COLUMN_D)]
optional: Option<f64>,
}
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>()?;
for row in rows_iter {
let row = row?;
println!("{row:?}");
}
Ok(())
}
fn main() {
run().unwrap()
}