Crate anchor_safe_math
source ·Expand description
§Anchor Safe Math
anchor_safe_math
is a collection of helper numeric operation functions that removes the
verbosity of checking for overflow, underflow and division by zero errors.
§Examples
use anchor_lang::prelude::;
use anchor_safe_math::{SafeMath};
#[program]
pub mod example {
use super::*;
pub fn instruction(ctx: Context<Instruction>, amount: u64) -> ProgramResult {
let state = &mut ctx.accounts.state;
// You can apply any of the following operations
state.total_amount = state.total_amount.safe_add(amount)?;
state.total_amount = state.total_amount.safe_sub(amount)?;
state.total_amount = state.total_amount.safe_mul(amount)?;
state.total_amount = state.total_amount.safe_div(amount)?;
state.total_amount = state.total_amount.safe_pow(8_u32)?;
}
}
#[derive(Accounts)]
pub struct Instruction<'info> {
...
}
Enums§
- Errors that can be triggered by executing one of the supported numeric operations
Traits§
- Defines a set of safe math operations that return a
ProgramError
which is expected in an anchor instruction execution.