使用Rust 2018,此代码工作(游乐场):
use std::panic;
use std::format;
use std::assert_eq;但这一点:
use std::assert;导致此错误:
error[E0432]: unresolved import `std::assert`
--> src/lib.rs:4:5
|
4 | use std::assert;
| ^^^^^^^^^^^ no `assert` in the root我读过关于这个主题的版本指南,它说use应该与macro_rules!宏和过程宏一起工作。因此,我很困惑。
发布于 2019-03-31 18:49:12
use应该与macro_rules!宏和过程宏一起工作。
除了assert是这两个都不是
/内置宏到编译器本身。/这些宏没有任何与
macro\_rules!/宏相对应的定义,但在这里有文档说明。它们的实现可以找到硬编码/到lib语法本身。
这是一个编译器内置
#[stable(feature = "rust1", since = "1.0.0")]
#[rustc_doc_only_macro]
macro_rules! assert {
($cond:expr) => ({ /* compiler built-in */ });
($cond:expr,) => ({ /* compiler built-in */ });
($cond:expr, $($arg:tt)+) => ({ /* compiler built-in */ });
}其他人造宏包括:
compile_errorformat_argsenvoption_envconcat_identsconcatlinecolumnfilestringifyinclude_strinclude_bytesmodule_pathcfgincludeassert的实际定义在ext/assert.rs中要低得多。
稳定2018年锈蚀的均匀路径(#56417)顺便提到了以下几点:
内置宏,例如
use env。当前由于内置宏的一些(可修复的)实现细节而导致的错误。在稳定之前(删除错误后)没有要解决的已知问题。
https://stackoverflow.com/questions/55444086
复制相似问题