Trait Discriminator

Source
pub trait Discriminator {
    const DISCRIMINATOR: &'static [u8];
}
Expand description

Unique identifier for a type.

This is not a trait you should derive manually, as various Anchor macros already derive it internally.

Prior to Anchor v0.31, discriminators were always 8 bytes in size. However, starting with Anchor v0.31, it is possible to override the default discriminators, and discriminator length is no longer fixed, which means this trait can also be implemented for non-Anchor programs.

It’s important that the discriminator is always unique for the type you’re implementing it for. While the discriminator can be at any length (including zero), the IDL generation does not currently allow empty discriminators for safety and convenience reasons. However, the trait definition still allows empty discriminators because some non-Anchor programs, e.g. the SPL Token program, don’t have account discriminators. In that case, safety checks should never depend on the discriminator.

Required Associated Constants§

Source

const DISCRIMINATOR: &'static [u8]

Discriminator slice.

See Discriminator trait documentation for more information.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Discriminator for Destroy

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for Initialize

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for Update

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for UpdateWithSession

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for BoltExecute

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for CreateSession

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RevokeSession

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for SessionToken

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for AddAuthority

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for AddEntity

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for Apply

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for ApplyWithSession

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for ApproveSystem

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for DestroyComponent

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InitializeComponent

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InitializeNewWorld

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for InitializeRegistry

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RemoveAuthority

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for RemoveSystem

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for Registry

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for SystemWhitelist

Source§

const DISCRIMINATOR: &'static [u8]

Source§

impl Discriminator for World

Source§

const DISCRIMINATOR: &'static [u8]

Implementors§