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}