Skip to main content

interface_account_set

Macro interface_account_set 

Source
macro_rules! interface_account_set {
    (
        $(#[$marker_meta:meta])*
        $vis:vis struct $marker:ident : $interface:ty;
        $(#[$resolved_meta:meta])*
        $enum_vis:vis enum $resolved:ident {
            $($variant:ident($layout:ty)),+ $(,)?
        }
    ) => { ... };
}
Expand description

Declare a bounded multi-layout interface account resolver.

Use this when one account slot may hold one of several Hopper-header layouts owned by the same interface program set, such as a migration reader that accepts VaultV1 or VaultV2.

hopper::interface_account_set! {
    pub struct AnyVaultAccount: VaultPrograms;
    pub enum AnyVault {
        V1(VaultV1),
        V2(VaultV2),
    }
}