pub trait NamedLibfunc: Default {
    type Concrete: ConcreteLibfunc;

    const STR_ID: &'static str;

    // Required methods
    fn specialize_signature(
        &self,
        context: &dyn SignatureSpecializationContext,
        args: &[GenericArg]
    ) -> Result<LibfuncSignature, SpecializationError>;
    fn specialize(
        &self,
        context: &dyn SpecializationContext,
        args: &[GenericArg]
    ) -> Result<Self::Concrete, SpecializationError>;
}
Expand description

Trait for implementing a specialization generator with a simple id.

Required Associated Types§

Required Associated Constants§

source

const STR_ID: &'static str

Required Methods§

source

fn specialize_signature( &self, context: &dyn SignatureSpecializationContext, args: &[GenericArg] ) -> Result<LibfuncSignature, SpecializationError>

Creates the specialization of the libfunc’s signature with the template arguments.

source

fn specialize( &self, context: &dyn SpecializationContext, args: &[GenericArg] ) -> Result<Self::Concrete, SpecializationError>

Creates the specialization with the template arguments.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl NamedLibfunc for DowncastLibfunc

§

type Concrete = DowncastConcreteLibfunc

source§

const STR_ID: &'static str = "downcast"

source§

impl NamedLibfunc for EnumInitLibfunc

§

type Concrete = EnumInitConcreteLibfunc

source§

const STR_ID: &'static str = "enum_init"

source§

impl NamedLibfunc for Felt252ConstLibfunc

§

type Concrete = Felt252ConstConcreteLibfunc

source§

const STR_ID: &'static str = "felt252_const"

source§

impl NamedLibfunc for FunctionCallLibfunc

§

type Concrete = FunctionCallConcreteLibfunc

source§

const STR_ID: &'static str = "function_call"

source§

impl NamedLibfunc for CheatcodeLibfunc

§

type Concrete = CheatcodeConcreteLibfunc

source§

const STR_ID: &'static str = "cheatcode"

source§

impl<T: ConstGenLibfunc> NamedLibfunc for WrapConstGenLibfunc<T>

source§

const STR_ID: &'static str = <T as ConstGenLibfunc>::STR_ID

§

type Concrete = SignatureAndConstConcreteLibfunc

source§

impl<T: SignatureAndTypeGenericLibfunc> NamedLibfunc for WrapSignatureAndTypeGenericLibfunc<T>

§

type Concrete = SignatureAndTypeConcreteLibfunc

source§

const STR_ID: &'static str = <T as SignatureAndTypeGenericLibfunc>::STR_ID

source§

impl<T: SignatureOnlyGenericLibfunc> NamedLibfunc for T

§

type Concrete = SignatureOnlyConcreteLibfunc

source§

const STR_ID: &'static str = <Self as SignatureOnlyGenericLibfunc>::STR_ID

source§

impl<TIntTraits: IntTraits> NamedLibfunc for IntConstLibfunc<TIntTraits>

source§

const STR_ID: &'static str = TIntTraits::CONST

§

type Concrete = IntConstConcreteLibfunc<TIntTraits>