1 个不稳定版本

0.1.0 2024 年 8 月 10 日

#807开发工具

Download history 107/week @ 2024-08-09

107 每月下载量

MIT/Apache

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