use std::path::Path;
use safetensors::tensor::{Dtype, TensorView};
use crate::error::{ForgeError, Result};
pub fn save_safetensors(
path: impl AsRef<Path>,
entries: &[(String, Vec<usize>, Vec<f32>)],
) -> Result<()> {
let views: Vec<(String, TensorView<'_>)> = entries
.iter()
.map(|(name, shape, data)| {
TensorView::new(Dtype::F32, shape.clone(), bytemuck::cast_slice(data))
.map(|v| (name.clone(), v))
.map_err(|e| ForgeError::SafeTensors(format!("{name}: {e}")))
})
.collect::<Result<_>>()?;
safetensors::serialize_to_file(views, &None, path.as_ref())
.map_err(|e| ForgeError::SafeTensors(format!("{}: {e}", path.as_ref().display())))
}