use syn::parse::Parse;
use crate::parse::next_node_id;
#[derive(Debug, Clone)]
pub(crate) struct PatternClosure {
pub node_id: usize,
pub closure: syn::ExprClosure,
}
impl Parse for PatternClosure {
fn parse(input: syn::parse::ParseStream) -> syn::Result<Self> {
let closure: syn::ExprClosure = input.parse()?;
if closure.inputs.len() != 1 {
return Err(syn::Error::new_spanned(
&closure.inputs,
"Closure must have exactly one parameter",
));
}
Ok(PatternClosure {
node_id: next_node_id(),
closure,
})
}
}