pub type ObserverResult = Result<()>;Expand description
Result type for observer callbacks.
This is a convenience alias for anyhow::Result<()>.
Methods generated by the #[observer] macro may also return
Result<(), ParserError> or another Result whose error can convert into
anyhow::Error. Concrete error types, including ParserError, are kept
inside the anyhow::Error and can be recovered with downcasting from
ParserError::ObserverError.
§Examples
use source2_demo::prelude::*;
#[derive(Default)]
struct FailingObserver;
#[observer]
impl FailingObserver {
#[on_tick_start]
fn on_tick_start(&mut self) -> Result<(), ParserError> {
Err(ParserError::WrongMagic)
}
}
let mut parser = Parser::from_reader(std::fs::File::open("replay.dem")?)?;
parser.register_observer::<FailingObserver>();
match parser.run_to_end() {
Err(ParserError::ObserverError(error)) => {
if let Some(ParserError::WrongMagic) = error.downcast_ref::<ParserError>() {
println!("observer returned ParserError::WrongMagic");
}
}
Err(error) => {
println!("parser error: {error}");
}
Ok(()) => {}
}Aliased Type§
pub enum ObserverResult {
Ok(()),
Err(Error),
}