在标准Rust代码中,vec!
宏位于前奏中,无需手动使其可见。我正在使用一个不使用标准库并设置#![no_std]
的库,因此前奏也不可见。
在测试代码中,我 am 使用标准库中的功能,因此我有一个
#[cfg(test)]
extern crate std;
这可以正常访问标准库中的函数和数据类型,但是现在我想访问vec!(...)
宏,但我不知道如何。
use std::vec::vec!;
导致错误:
expected one of `::`, `;`, or `as` here
在感叹号的位置。
我该如何访问此宏?
答案 0 :(得分:4)
vec!
是宏,因此您必须添加#[macro_use]
:
#[cfg(test)]
#[macro_use]
extern crate std;
如果您使用夜间编译器,还可以使用 use_extern_macros 功能:
#![feature(use_extern_macros)]
#[cfg(test)]
extern crate std;
#[cfg(test)]
mod test {
use std::vec;
}
答案 1 :(得分:4)