1 个不稳定版本
0.1.0 | 2020年10月30日 |
---|
#342 在 无标准库
6KB
cheapalloc
这是一个简单的crate,提供使用libc malloc & free的GlobalAllocator,因此使用现有的C堆栈。(因此得名:“C堆栈分配”)
预期用途是在通过C的FFI使用Rust库时启用堆相关特性,例如Box、alloc::vec::Vec、alloc::string::String等,以便它们可以使用现有的C堆栈。
此crate的原始使命是使Rust能够用于在微控制器上制作嵌入式应用的静态库。
依赖项
由于使用了#![feature(lang_items)]
,需要nightly编译器。
使用此crate
将crate作为依赖项添加,全局分配器应该会提供。
您需要修改您的链接系统
TODO:链接器说明,例如 --print-sysroot
, -Wl,-lc
,等等
注意:此crate可以可选地定义一个超出内存的panic_halt
/ oom
处理程序,通过provide_oom
功能。这目前专门针对Cortex-M架构实现,目的是减轻用户/库需要自己包含此块的需要。
示例
TODO:包含一个示例,或在单独的GitHub仓库中提供一个。serde等非常强大的东西可以在Cortex-M微控制器上运行!
陷阱
超出此crate的范围,但:将Rust静态库链接到现有的C程序确实会因Rust使用compiler-builtins
而出现一些问题。
有关讨论 此处。
许可证
此模板的许可证是以下之一
-
Apache License,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
-
麻省理工学院许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
根据您的选择。
贡献
除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,将如上双许可,无需任何额外条款或条件。
依赖项
~180KB