我正在为Rust中的编程语言实现编写运行时.我打算在这个运行时链接我生成的编译代码,所以我不想依赖于std保持二进制小.问题是,当我尝试cargo test我的运行时,我得到错误说std::slice::AsSlice无法找到,我发现一些谷歌搜索之后是因为一些测试工具需要std库代码.
有没有人对如何测试此代码有任何建议?有没有办法有条件地包含#![no_std]pragma,即在测试时仍然包含std库?我还尝试创建一个单独的测试包,其中包含std库,extern crate将运行时包放入其中并在那里运行我的测试,但这引入了一组全新的问题.
小智 28
您可以通过 cfg_attr 有条件地设置 no_std。
#![cfg_attr(not(test), no_std)]
Run Code Online (Sandbox Code Playgroud)
#[cfg(test)]
#[macro_use]
extern crate std;
Run Code Online (Sandbox Code Playgroud)
(该#[macro_use]部分是可选的.)
| 归档时间: |
|
| 查看次数: |
1205 次 |
| 最近记录: |