Skip to main content

ObserverResult

Type Alias ObserverResult 

Source
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),
}

Variants§

§1.0.0

Ok(())

Contains the success value

§1.0.0

Err(Error)

Contains the error value