pub struct RecordParser<'doc> { /* private fields */ }Expand description
Helper for parsing record (map with string keys) from Eure documents.
Tracks accessed fields for unknown field checking.
§Example
impl ParseDocument<'_> for User {
fn parse(doc: &EureDocument, node_id: NodeId) -> Result<Self, ParseError> {
let mut rec = doc.parse_record(node_id)?;
let name = rec.field::<String>("name")?;
let age = rec.field_optional::<u32>("age")?;
rec.deny_unknown_fields()?;
Ok(User { name, age })
}
}Implementations§
Source§impl<'doc> RecordParser<'doc>
impl<'doc> RecordParser<'doc>
Sourcepub fn field<T: ParseDocument<'doc>>(
&mut self,
name: &str,
) -> Result<T, ParseError>
pub fn field<T: ParseDocument<'doc>>( &mut self, name: &str, ) -> Result<T, ParseError>
Get a required field.
Returns ParseErrorKind::MissingField if the field is not present.
Sourcepub fn field_optional<T: ParseDocument<'doc>>(
&mut self,
name: &str,
) -> Result<Option<T>, ParseError>
pub fn field_optional<T: ParseDocument<'doc>>( &mut self, name: &str, ) -> Result<Option<T>, ParseError>
Get an optional field.
Returns Ok(None) if the field is not present.
Sourcepub fn field_node(&mut self, name: &str) -> Result<NodeId, ParseError>
pub fn field_node(&mut self, name: &str) -> Result<NodeId, ParseError>
Get the NodeId for a field (for manual handling).
Returns ParseErrorKind::MissingField if the field is not present.
Sourcepub fn field_node_optional(&mut self, name: &str) -> Option<NodeId>
pub fn field_node_optional(&mut self, name: &str) -> Option<NodeId>
Get the NodeId for an optional field.
Returns None if the field is not present.
Sourcepub fn deny_unknown_fields(self) -> Result<(), ParseError>
pub fn deny_unknown_fields(self) -> Result<(), ParseError>
Finish parsing with Deny policy (error if unknown fields exist).
This also errors if the map contains non-string keys, as records should only have string-keyed fields.
Sourcepub fn allow_unknown_fields(self) -> Result<(), ParseError>
pub fn allow_unknown_fields(self) -> Result<(), ParseError>
Finish parsing with Allow policy (allow unknown string fields).
This still errors if the map contains non-string keys, as records should only have string-keyed fields.
Sourcepub fn unknown_fields(&self) -> impl Iterator<Item = (&'doc str, NodeId)> + '_
pub fn unknown_fields(&self) -> impl Iterator<Item = (&'doc str, NodeId)> + '_
Get an iterator over unknown fields (for Schema policy or custom handling).
Returns (field_name, node_id) pairs for fields that haven’t been accessed.