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);