pub trait Visitor<'a> {
// Required methods
fn item(&mut self, bare: BareItem<'a>) -> Result<(), ParseError>;
fn param(
&mut self,
key: &'a str,
value: BareItem<'a>,
) -> Result<(), ParseError>;
// Provided methods
fn inner_list_start(&mut self) -> Result<(), ParseError> { ... }
fn inner_list_end(&mut self) -> Result<(), ParseError> { ... }
fn key(&mut self, key: &'a str) -> Result<(), ParseError> { ... }
}Expand description
Receives a parse as events: the single-pass form, for callers that read one key or count items without building a view.
§Examples
use parse_net::{sfv::{BareItem, Parser, Visitor}, Limits, ParseError};
struct Urgency(Option<i64>, bool);
impl<'a> Visitor<'a> for Urgency {
fn item(&mut self, bare: BareItem<'a>) -> Result<(), ParseError> {
if let (true, BareItem::Integer(u)) = (self.1, bare) { self.0 = Some(u); }
Ok(())
}
fn param(&mut self, _: &'a str, _: BareItem<'a>) -> Result<(), ParseError> { Ok(()) }
fn key(&mut self, key: &'a str) -> Result<(), ParseError> { self.1 = key == "u"; Ok(()) }
}
let mut v = Urgency(None, false);
Parser::new(Limits::DEFAULT).visit_dictionary(b"u=5, i", &mut v)?;
assert_eq!(v.0, Some(5));Required Methods§
Provided Methods§
Sourcefn inner_list_start(&mut self) -> Result<(), ParseError>
fn inner_list_start(&mut self) -> Result<(), ParseError>
Sourcefn inner_list_end(&mut self) -> Result<(), ParseError>
fn inner_list_end(&mut self) -> Result<(), ParseError>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".