cfpyo3_core/df/io/
fs.rs

1use crate::{df::DataFrame, toolkit::array::AFloat};
2use anyhow::Result;
3use std::fs::File;
4
5impl<'a, T: AFloat> DataFrame<'a, T> {
6    pub fn save(&self, path: &str) -> Result<()> {
7        let mut file = File::create(path)?;
8        self.write(&mut file)
9    }
10
11    pub fn load(path: &str) -> Result<Self> {
12        let mut file = File::open(path)?;
13        DataFrame::read(&mut file)
14    }
15}
16
17#[cfg(test)]
18pub(super) mod tests {
19    use super::*;
20    use crate::df::io::bytes::tests::get_test_df;
21    use tempfile::tempdir;
22
23    #[test]
24    fn test_fs_io() {
25        let df = get_test_df();
26        let dir = tempdir().unwrap();
27        let file_path = dir.path().join("test.cfdf");
28        let file_path = file_path.to_str().unwrap();
29        df.save(file_path).unwrap();
30        let loaded = DataFrame::<f32>::load(file_path).unwrap();
31        assert_eq!(df.index(), loaded.index());
32        assert_eq!(df.columns(), loaded.columns());
33        assert_eq!(df.values(), loaded.values());
34        dir.close().unwrap();
35    }
36}