[][src]Module proc_macro_error::multi

This module contains data types and functions to be used for multi-error reporting.

Unlike MacroError type, MultiMacroErrors is intended to be used directly by users, there are no macros to help with this (yet).

Example

fn parse_field(field: syn::FieldsNamed) -> Result<(), MacroError> {
    // ...
}

#[proc_macro_derive(Hello)]
fn hello(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
    filter_macro_errors! {
        let err_storage = MultiMacroErrors::new();

        // ... retrieve fields struct ...
        let fields = parse_struct(input);
        for field in fields {
            match parse_field(fields) {
                Ok(a) => process(),
                Err(err) => err_storage.add(err)
            }
        }

        // abort if some errors had occurred
        err_storage.trigger_on_error()
    }
}

Structs

MultiMacroErrors

This type represents a container for multiple errors. Each error has it's own span location.