#box #trait-object #stack #no-std

nightly no-std static-box

存储特例对象的栈分配框

4个版本 (2个重大更改)

0.2.0 2021年7月7日
0.1.0 2021年6月4日
0.0.2 2021年5月11日
0.0.1 2021年5月6日

#2292 in 数据结构

MIT/Apache

17KB
271

Continuous integration Crates.io API reference

概述

此crate允许在提供的缓冲区中保存DST对象。它允许用户在no_std环境中创建全局动态对象,而无需全局分配器。

use static_box::Box;

struct Uart1Rx {
    // Implementation details...
}

impl SerialWrite for Uart1Rx {
    fn write(&mut self, _byte: u8) {
        // Implementation details
    }
}
let rx = Uart1Rx { /* ... */ };

let mut buf = [0; 32];
let mut writer = Box::<dyn SerialWrite>::new(&mut buf, rx);
writer.write_str("Hello world!");

此实现受到rustc测试仓库中thin_box示例的启发。

最小支持的rustc版本

此crate使用以下不稳定特性

换句话说,crate支持的nightly rustc版本是1.53.0,但无法保证此代码在新版本上运行良好。

许可证

双许可以与Rust项目兼容。

根据您的选择,许可协议为Apache License,版本2.0 http://www.apache.org/licenses/LICENSE-2.0 或MIT许可 http://opensource.org/licenses/MIT。此文件不得根据这些条款复制、修改或分发。

无运行时依赖