compris 0.0.11

Composite Primitive Schema (CPS) for Rust
Documentation
use super::super::{
    super::{annotate::*, normal::*},
    errors::*,
    resolve::*,
};

use kutil::std::error::*;

impl<InnerT, AnnotatedT> Resolve<Annotate<InnerT, AnnotatedT>, AnnotatedT> for Variant<AnnotatedT>
where
    AnnotatedT: Annotated + Default,
    Variant<AnnotatedT>: Resolve<InnerT, AnnotatedT>,
{
    fn resolve_with_errors<ErrorReceiverT>(
        self,
        errors: &mut ErrorReceiverT,
    ) -> ResolveResult<Annotate<InnerT, AnnotatedT>, AnnotatedT>
    where
        ErrorReceiverT: ErrorReceiver<ResolveError<AnnotatedT>>,
    {
        let annotations = self.annotations().cloned();
        Ok(self.resolve_with_errors(errors)?.map(|inner| {
            let annotate = Annotate::new(inner);
            match annotations {
                Some(annotations) => annotate.with_annotations(annotations),
                None => annotate,
            }
        }))
    }
}