1 个不稳定版本
0.1.0 | 2024 年 8 月 10 日 |
---|
#807 在 开发工具
107 每月下载量
11KB
Prealloc 允许将静态内存访问得像堆内存一样
快速入门
安装
将此依赖项添加到您的 Cargo.toml
[dependencies]
prealloc = "0.1.0"
配置文件
创建一个 JSON 配置文件(例如 config.json
),定义项目、它们的类型和数量
[
{
"name": "MyStruct",
"type": "my_project::MyStruct",
"size": 3
},
{
"name": "MyEnumUseCaseA",
"type": "my_project::MyEnum",
"size": 5
},
{
"name": "MyEnumUseCaseB",
"type": "my_project::MyEnum",
"size": 2
}
]
示例
use prealloc::prealloc_from_config;
prealloc_from_config!("path/to/config.json");
#[derive(Debug)]
#[allow(dead_code)]
pub enum MyEnum {
L(u32),
R,
}
impl Drop for MyEnum {
fn drop(&mut self) {
println!("Dropping MyEnum located at {self:p}");
}
}
fn main() {
for idx in 0..=5 {
// The dispatch_static macro retrieves one preallocated element and initializes it.
if let Some(item) = dispatch_static!(MyEnumUseCaseA, MyEnum::L(33)) {
println!("Retrieved {idx}: {item:p}");
} else {
println!("MyEnumUseCaseA depleted");
}
}
}
使用 cargo run --example
在此存储库上发现更多示例。
许可协议
根据您的选择,在 Apache 许可证 2.0 版或 MIT 许可证下许可。
除非您明确说明,否则根据 Apache-2.0 许可证定义的,您故意提交以包含在此存储库中的任何贡献,均应如上所述双重许可,而不附加任何其他条款或条件。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT 文件。
依赖项
~1.8–2.5MB
~56K SLoC