use crate::csv::Record;
use crate::{Generation, ParseError};
use ascii::AsciiStr;
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct Component<'a> {
pub name: &'a AsciiStr,
pub generation: Generation,
}
impl<'a> Component<'a> {
#[must_use]
pub fn new(name: &'a AsciiStr, generation: Generation) -> Self {
Self { name, generation }
}
pub(crate) fn from_record<const N: usize>(
record: &Record<'a, N>,
) -> Result<Self, ParseError> {
Ok(Self {
name: record.get_field(0).ok_or(ParseError::TooFewFields)?,
generation: record
.get_field_as_generation(1)?
.ok_or(ParseError::TooFewFields)?,
})
}
}