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.