use
должен работать с macro_rules!
макросами и процедурными макросами
За исключением того, что assert
не является ни тем, ни другим :
/// Built-in macros to the compiler itself.
///
/// These macros do not have any corresponding definition with a `macro_rules!`
/// macro, but are documented here. Their implementations can be found hardcoded
/// into libsyntax itself.
Это встроенный компилятор :
#[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_error
format_args
env
option_env
concat_idents
concat
line
column
file
stringify
include_str
include_bytes
module_path
cfg
include
Фактическое определение assert
скрыто гораздо ниже в libsyntax_ext / assert.rs
Стабилизация равномерных путей на Rust 2018 (# 56417) упоминает об этом попутно:
Встроенные макросы, например use env
.
В настоящее время ошибка из-за некоторых (исправляемых) деталей реализации встроенных макросов.
Нет известных проблем, которые нужно решить до стабилизации (после устранения ошибки).