Hello,
最近接到一个需求,要把一个只支持std的库改成支持no_std 这是目前的思路与问题。
思路:
- 目标库的依赖列出来,标出哪些依赖不支持no_std
- 依赖是个树形结构,往下分析2~3层,看哪些大的库暂时还不支持no_std
- 修改: 大概是每个文件加个cfg_attr, 然后给所有依赖的基础库开启no_std feature
- 每个库的开启方法可能不一样
- 有些没有外部依赖的底层方法,如果没有考虑no_std,得用no_std重写,比如一下, 这个fn a()就写了2遍,比如一个里面在用std::String, 一个在用alloc::String
#[cfg_attr(feature="std")]
fn a() {//std implementation}
#[cfg_attr(not(feature="std"))]
fn a() {//no_std implementation}
问题
- 目标库也还在迅速迭代中。目标库改动/升级了,怎么与目标库团队协作?限制引入std crate?
感觉会有一些坑,如果哪位大神有相关经验,请赐教,万分感谢!
1
共 0 条评论, 1 页
评论区
写评论还没有评论