use crate::error::UnevalError;
use crate::ser::{SerResult, Uneval};
use serde::Serialize;
pub fn write(value: impl Serialize, target: impl std::io::Write) -> SerResult {
value.serialize(&mut Uneval::new(target))
}
pub fn to_file(value: impl Serialize, target: impl AsRef<std::path::Path>) -> SerResult {
value.serialize(&mut Uneval::new(std::fs::File::create(target)?))
}
pub fn to_out_dir(value: impl Serialize, file_name: impl AsRef<str>) -> SerResult {
let path: std::path::PathBuf = [
std::env::var("OUT_DIR")
.expect("OUT_DIR not set, check if you're running this from the build script"),
file_name.as_ref().into(),
]
.iter()
.collect();
value.serialize(&mut Uneval::new(std::fs::File::create(path)?))
}
pub fn to_string(value: impl Serialize) -> Result<String, UnevalError> {
let mut out = Vec::new();
value.serialize(&mut Uneval::new(&mut out))?;
Ok(String::from_utf8(out)?)
}