#[derive(Default, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Deserialize, Serialize)]
#[serde(deny_unknown_fields)]
pub struct Statistics
{
pub number_of_living_descendants: usize,
pub number_of_dying_descendants: usize,
}
impl Statistics
{
#[inline(always)]
pub(super) fn from_file(file_path: &Path) -> Result<Self, StatisticsParseError>
{
let mut number_of_living_descendants = None;
let mut number_of_dying_descendants = None;
parse_key_value_statistics(file_path, &mut |name, value| match name
{
b"nr_descendants" =>
{
number_of_living_descendants = Some(value);
Ok(())
}
b"nr_dying_descendants" =>
{
number_of_dying_descendants = Some(value);
Ok(())
}
_ => Ok(()),
})?;
Ok
(
Self
{
number_of_living_descendants: unwrap_statistic(number_of_living_descendants, b"number_of_living_descendants")?,
number_of_dying_descendants: unwrap_statistic(number_of_dying_descendants, b"number_of_dying_descendants")?,
}
)
}
}