Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
prelude中是否包含Rust std库中的所有宏?_Rust_Macros - Fatal编程技术网

prelude中是否包含Rust std库中的所有宏?

prelude中是否包含Rust std库中的所有宏?,rust,macros,Rust,Macros,Rust的std库中的所有宏是否都包含在中?那么,在没有任何use语句和不使用std::前缀的情况下,中的每个宏都始终可用吗 如果它们都包含在前奏曲中;是否保证始终如此,或者宏理论上可以添加到std库中,并且只能使用std::foo::macro\u name访问!()?标准宏 rustc自动在板条箱上添加以下代码: #![功能(前奏曲导入)] #![无标准] #[开场白] 用法::std::前奏::v1::*; #[宏_使用] 外部板条箱标准为标准; 由于#[macro_use]外部板条箱标

Rust的std库中的所有宏是否都包含在中?那么,在没有任何
use
语句和不使用
std::
前缀的情况下,中的每个宏都始终可用吗

如果它们都包含在前奏曲中;是否保证始终如此,或者宏理论上可以添加到std库中,并且只能使用
std::foo::macro\u name访问!()

标准宏

rustc
自动在板条箱上添加以下代码:

#![功能(前奏曲导入)]
#![无标准]
#[开场白]
用法::std::前奏::v1::*;
#[宏_使用]
外部板条箱标准为标准;

由于
#[macro_use]外部板条箱标准作为标准
,在标准库中定义的所有宏(标记为
#[macro_export]
无需使用
std::

宏与函数或模块不遵循相同的规则,无论它们在何处定义,如果您将它们标记为可导出,它们都将位于板条箱的底部,并且可以通过
cratename::macroname访问
std::prelude
docs甚至没有提到宏,所以它们很可能都是自动导入的,因为我认为没有必要挑剔应该从std宏导出什么,要么全部导出,要么什么都不导出。话虽如此,这个问题的理由是什么?如果您无法访问某些宏,编译器会告诉您。@Shasahae试图更好地学习语言的有趣部分有什么不对?我的问题的哪一部分暗示您的问题是错的?我只是问你是否有任何问题,在解释了如果你可以访问宏的话,很可能会导出所有宏,或者不导出任何宏,同时还提到它们的名称空间与典型的类型或模块不同。再次感谢你的快速回答!)我问题的第二部分是什么;是否可以向标准库中添加一个不使用
#[macro_export]
,因此没有
std::foo::
前缀就无法使用的宏?@ruohola否,因为没有
macro_export
,它们在外部无法访问
macro\u export
基本上是宏的
pub
。旁注:您实际上可以使用
cargo expand
子命令找到此扩展。