use proc_macro2::TokenStream;
use syn::ItemFn;
use crate::implementation::{ContractMode, ContractType, FuncWithContracts};
pub(crate) fn requires(mode: ContractMode, attr: TokenStream, toks: TokenStream) -> TokenStream {
let ty = ContractType::Requires;
let func: ItemFn = syn::parse_quote!(#toks);
let f = FuncWithContracts::new_with_initial_contract(func, ty, mode, attr);
f.generate()
}