Skip to main content

error_codes

Macro error_codes 

Source
macro_rules! error_codes {
    (
        base = $base:expr;
        $( $(#[$meta:meta])* $name:ident ),+ $(,)?
    ) => { ... };
    (@count $code:expr; $(#[$meta:meta])* $name:ident) => { ... };
    (@count $code:expr; $(#[$meta:meta])* $name:ident, $( $(#[$rmeta:meta])* $rest:ident ),+ ) => { ... };
}
Expand description

Define numbered program error codes that map to ProgramError::Custom.

Replaces Anchor’s #[error_code] proc macro. Each variant gets a u32 discriminant offset from a base you provide. The macro emits constants and an Into<ProgramError> conversion.

error_codes! {
    base = 6000;
    Undercollateralized,   // 6000
    Expired,               // 6001
    InvalidOracle,         // 6002
}

// Use in require! or return Err(...)
require!(collateral >= min, Undercollateralized);