INNER CODE UNIT · Rust

derive_absorb

arkworks-rs/crypto-primitives · macros/src/lib.rs:8

pub fn derive_absorb(input: TokenStream) -> TokenStream {
    let input = parse_macro_input!(input as DeriveInput);

    let name = input.ident;
    let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();

    let len = if let Data::Struct(ref data_struct) = input.data {
        data_struct.fields.len()
    } else {
        panic!(
            "`Absorb` can only be derived for structs, {} is not a struct",
            name
        );
    };

    let mut to_sponge_bytes = Vec::<TokenStream2>::with_capacity(len);
    let mut to_sponge_field_elements = Vec::<TokenStream2>::with_capacity(len);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…