use super::types::FieldType;
pub fn validate_field_type(ty: &FieldType) -> Result<(), ValidationError> {
match ty {
FieldType::Option(inner) | FieldType::Vec(inner) => {
validate_field_type(inner)?;
if matches!(ty, FieldType::Option(_)) && matches!(&**inner, FieldType::Option(_)) {
return Err(ValidationError::NestedOption);
}
Ok(())
}
FieldType::Struct(name) => {
if name.is_empty() {
Err(ValidationError::EmptyStructName)
} else {
Ok(())
}
}
_ => Ok(()),
}
}
#[derive(Debug)]
pub enum ValidationError {
NestedOption,
EmptyStructName,
}