Anchor IDL 支持 HashMap,以及其他所有的 Rust 类型。下面是一个使用 HashMap 的代码示例:
use anchor_lang::prelude::*;
use std::collections::HashMap;
#[program]
mod my_program {
use super::*;
#[state]
pub struct MyState {
pub my_map: HashMap,
}
impl MyProgram {
pub fn add_value(&mut self, ctx: Context, key: String, value: u64) -> ProgramResult {
let my_state = &mut ctx.accounts.my_state;
my_state.my_map.insert(key, value);
Ok(())
}
}
}
在这个示例中,MyState 状态结构体有一个名为 my_map 的 HashMap 字段。add_value 方法接受一个键和一个值作为参数,并将键值对添加到 my_map 中。
请注意,Anchor IDL 并不支持所有的 Rust 类型。具体而言,它只支持 bool、u8、i8、u16、i16、u32、i32、u64、i64、u128、i128、f32、f64、String 和 Pubkey 这些类型。如果您需要使用其中任何其他的类型,您需要将它们转换成 Anchor IDL 支持的类型或进行其他适当的处理。
上一篇:anchoredvwapdoesn'tstartplottingatcondition(固定均价交易量加权平均线在条件下不开始绘制)
下一篇:AnchoringRendered3dModeltoCharUcoBoardwithOpenCVtoOpenGLPoseEstimation