accepts-codegen 0.0.1

Rust toolkit for composing synchronous and asynchronous acceptor pipelines
Documentation
use syn::{
    Arm, Attribute, Expr, ExprMatch,
    token::{Brace, Match},
};

pub trait ExprMatchConstructExt {
    fn from_parts(
        attrs: Vec<Attribute>,
        match_token: Match,
        expr: Box<Expr>,
        brace_token: Brace,
        arms: Vec<Arm>,
    ) -> ExprMatch;

    fn from_attrs_expr_arms(attrs: Vec<Attribute>, expr: Box<Expr>, arms: Vec<Arm>) -> ExprMatch;

    fn from_expr_arms(expr: Box<Expr>, arms: Vec<Arm>) -> ExprMatch;
}

impl ExprMatchConstructExt for ExprMatch {
    fn from_parts(
        attrs: Vec<Attribute>,
        match_token: Match,
        expr: Box<Expr>,
        brace_token: Brace,
        arms: Vec<Arm>,
    ) -> ExprMatch {
        ExprMatch {
            attrs,
            match_token,
            expr,
            brace_token,
            arms,
        }
    }

    fn from_attrs_expr_arms(attrs: Vec<Attribute>, expr: Box<Expr>, arms: Vec<Arm>) -> ExprMatch {
        <Self as ExprMatchConstructExt>::from_parts(
            attrs,
            Match::default(),
            expr,
            Brace::default(),
            arms,
        )
    }

    fn from_expr_arms(expr: Box<Expr>, arms: Vec<Arm>) -> ExprMatch {
        <Self as ExprMatchConstructExt>::from_attrs_expr_arms(Vec::new(), expr, arms)
    }
}