cairo_lang_sierra

Macro define_libfunc_hierarchy

source
macro_rules! define_libfunc_hierarchy {
    (pub enum $name:ident $(<
        $generic_arg:ident : $generic_arg_first_req:ident $(+ $generic_arg_other_reqs:ident)*
    >)? {
        $($variant_name:ident ($variant:ty),)*
    },
    $concrete_name:ident) => { ... };
}
Expand description

Forms a libfunc type from an enum of libfuncs. The new enum implements GenericLibfunc. All the variant types must also implement GenericLibfunc. Usage example:

define_libfunc_hierarchy! {
    pub enum MyLibfunc {
      LF0(Libfunc0),
      LF1(Libfunc1),
    }, MyLibfuncConcrete
}