< 返回版块

burtchensu 发表于 2021-03-31 20:57

Tags:no_std

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 页