#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
#[doc(hidden)]
pub use ::perstruct_proc_macros::perstruct;
#[derive(Debug)]
pub struct LoadResult<T> {
pub value: T,
pub deserialization_errors: Vec<(&'static str, String)>,
pub unknown_fields: Vec<String>,
}
pub trait Perstruct: Sized {
fn from_map(map: &std::collections::HashMap<&str, &str>) -> LoadResult<Self>;
fn keys() -> Vec<&'static str>
where
Self: Sized;
fn changed_keys(&self) -> &std::collections::HashSet<&'static str>;
fn mark_keys_changed(&mut self, keys: &[&'static str]);
fn serialize_changes(&self) -> Result<Vec<(&'static str, String)>, String>;
fn clear_changes(&mut self);
}