Attribute Macro frame_support_procedural::type_value

source ·
#[type_value]
Expand description

The #[pallet::type_value] attribute lets you define a struct implementing the Get trait to ease the use of storage types. This attribute is meant to be used alongside #[pallet::storage] to define a storage’s default value. This attribute can be used multiple times.

Item must be defined as:

#[pallet::type_value]
fn $MyDefaultName<$some_generic>() -> $default_type $optional_where_clause { $expr }

I.e.: a function definition with generics none or T: Config and a returned type.

E.g.:

#[pallet::type_value]
fn MyDefault<T: Config>() -> T::Balance { 3.into() }

Macro expansion

The macro renames the function to some internal name, generates a struct with the original name of the function and its generic, and implements Get<$ReturnType> by calling the user defined function.