Attribute Macro ic_cdk::init

source ·
#[init]
Expand description

Register the canister_init entry point of a canister.

This attribute macro will export the function canister_init in the canister module.

The function under this attribute must have no return value.

Each canister can only have one canister_init entry point.

§Example

#[init]
fn init_function() {
    // ...
}

The init function may accept an argument, if that argument is a CandidType:


#[derive(Clone, Debug, CandidType, Deserialize)]
struct InitArg {
    foo: u8,
}

#[init]
fn init_function(arg: InitArg) {
    // ...
}

In this case, the argument will be read from ic0.msg_arg_data_size/copy and passed to the init function upon successful deserialization. Refer to the canister_init Specification for more information.