1 个不稳定版本
新 0.1.0 | 2024年8月22日 |
---|
#23 in #borsh
在 magic-space 中使用
12KB
156 代码行
魔法空间
是的,这是AI生成的。
为 Solana 程序状态结构体提供派生宏,可以自动计算结构体所需的空间。
代码主要来自 @coral-xyz/anchor
项目,修改后无需 anchor 包即可使用。
源代码
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
magic_space = "^0.1.0"
或 cargo add
$ cargo add magic-space
用法
use magic_space::*;
#[derive(MagicSpace)]
struct SomeAccount {
apples: u32,
oranges: u32,
#[max_len(10)]
others: Vec<u32>,
#[max_len(10)]
name: String,
#[max_len(10, 5, 5)]
some_other: Vec<Vec<Vec<u8>>>,
#[max_len(10)]
e: Vec<Option<SomeEnum>>,
}
如果您有动态分配,您仍然可以使用 max_len 属性,如下所示:#[max_len(0)]
这样就可以避免担心向量的长度,从而可以应用以下模式
#[derive(MagicSpace)]
pub struct DynamicSizeVecPattern {
#[max_len(0)]
pub data: Vec<Item>,
}
impl DynamicSizeVecPattern {
pub fn size(vec_len: usize, str_len: usize) -> usize {
Self::MAGIC_SPACE + (vec_len * Item::size(str_len))
}
}
#[derive(MagicSpace)]
pub struct Item {
pub data: u64,
#[max_len(0)]
pub name: String,
}
许可证
Apache 2.0 LICENSE
依赖项
~275–730KB
~17K SLoC