1 unstable release
Uses new Rust 2024
| 0.1.0 | Oct 20, 2025 |
|---|
#36 in #deserializer
24KB
600 lines
lib.rs:
use polars_serde::de::BorrowedDataFrameDeserializer;
let s1 = Column::new("Ocean".into(), ["Atlantic", "Indian"]);
let s2 = Column::new("Area (km²)".into(), [106_460_000, 70_560_000]);
let df = DataFrame::new(vec![s1, s2]).unwrap();
#[derive(Debug, PartialEq, Deserialize)]
struct Columns<'a> {
#[serde(borrow, rename = "Ocean")]
ocean: Vec<&'a str>,
#[serde(rename = "Area (km²)")]
area: Vec<u64>,
}
let columns = Columns::deserialize(BorrowedDataFrameDeserializer::columns(&df))?;
assert_eq!(
columns,
Columns {
ocean: vec!["Atlantic", "Indian"],
area: vec![106_460_000, 70_560_000],
},
);
#[derive(Debug, PartialEq, Deserialize)]
struct Row<'a> {
#[serde(rename = "Ocean")]
ocean: &'a str,
#[serde(rename = "Area (km²)")]
area: u64,
}
let rows = Vec::<Row<'_>>::deserialize(BorrowedDataFrameDeserializer::rows(&df))?;
assert_eq!(
rows,
[
Row {
ocean: "Atlantic",
area: 106_460_000,
},
Row {
ocean: "Indian",
area: 70_560_000,
},
],
);
Dependencies
~28MB
~472K SLoC