borrowize 0.2.0

Derive borrowed view structs from owned Rust structs.
Documentation
//! Procedural macros for generating borrowed view types.

use proc_macro::TokenStream;
use syn::{DeriveInput, parse_macro_input};

mod attrs;
mod expand;
mod mapping;
mod path_segment_input;

/// Derives a borrowed view type and optional `view` method.
#[proc_macro_derive(View, attributes(borrowize))]
pub fn derive_view(input: TokenStream) -> TokenStream {
    let input = parse_macro_input!(input as DeriveInput);

    match expand::expand(&input) {
        Ok(tokens) => tokens.into(),
        Err(error) => error.to_compile_error().into(),
    }
}