问题标签 [rust-decl-macros]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rust - 有没有办法在没有过程宏的属性中“做宏的事情”?
具体来说,我正在尝试将宏输出放入文档注释中。我很兴奋这正是我想要的:
下一步是用我的内容替换该字符串。据此,我不会写#[doc=my_content!()]
,并且属性宏是程序性的,所以我需要另一个板条箱,而且(我认为)我的内容可以在不需要任何程序性宏功能的情况下生成。
有没有办法以某种方式使用“常规宏”来做到这一点,还是我不走运?
rust - 尝试使用外部宏的参数调用内部宏时,为什么会得到“意外令牌”?
higher!
尝试将宏接收到的表达式传递给宏时,我不理解这种失败lower!
:
我希望最后一个标记符合 中的规则lower!
,但编译器告诉我这是出乎意料的。我在这里想念什么?如何转移higher!
as $xstuff
to收到的表达式lower!
?
rust - 使用不同“种类”元素构建枚举的宏
我正在尝试提出一个我称之为宏的宏
它将创建一个枚举来表示状态机状态,其中一些将是最终(接受)状态 - S2
, S3
. 生成的枚举及其impl
应如下所示:
我天真的尝试:
最终出现以下错误:
尝试删除第二行中模式之间的逗号:
正在生产另一个:
我想我了解导致这些错误的原因 - 它认为这final
是另一个标识符匹配r
。但是编写这样一个宏的正确方法是什么(如果可能的话,不会过于复杂)?
我对宏调用有充分的灵活性,因为这是我个人的学习练习。主要目标是学习正确的做事方式。如果可能的话,最好让这个宏final
在任何位置接受。
rust - 如何匹配 Rust 宏中的特征?
我的目标是作为输入特征类型。
到目前为止,我尝试的是编写这样的解析器。
但它造成了当地的歧义。
rust - 如何实现定义新公共类型并返回该类型实例的宏?
我想实现一个结构,macro_rules!
因为泛型需要大量的样板和特征搜索。
有问题的结构内部有一个哈希表,但键和值类型由用户提供。代码如下:
这不会编译,因为它试图将结构粘贴到主函数中:
我该如何解决它?如何将结构与impl
块一起公开粘贴到主函数之外?
rust - 我可以定义一个将扩展为函数调用的宏吗?
我(天真地)尝试过这个,但它不会在屏幕上打印任何内容:
rust - 通过宏生成属性值
假设我有一个ident
名为module_name
. 如何通过这个参数生成属性的值?
简单来说,我想生成这样的东西:
rust - 如何在同一个 crate 中使用 Rust 宏?
我有以下来源:
内存.rs
我有一个宏:
块.rs
我想使用它:
它给了我错误:
为了使帖子简短,我在Gist上有完整的代码。
如果我把宏放在里面chunk.rs
,那么我可以使用它。我不认为如何跨模块文件使用宏?作品。Rust 改变了它的特性吗?我在 Rust 1.44.1 上。
rust - 在 Rust“macro_rules”宏中的调用站点使用本地绑定
考虑以下代码段:
如果我编译它,我会得到:
但是不应该将quick_hello
调用main
扩展为包含该let h = "hello"
语句的块,从而允许我在调用站点将其用作“hello”的速记吗?
我可能会知道这样做是为了保持宏的卫生,但是如果我需要上述行为怎么办?有没有办法“关闭”卫生来实现这一目标?
rust - 如何编写一个显示文件和行号以及可变数量参数的宏?
我在 Rust 中找到了几个有用的宏,即:file!(), line!(), stringify!()
我还发现 Rust 允许使用可变参数的宏,如此处所述:
我的目标是以某种方式将所有这些宏组合到一个我将在故障排除/调试期间使用的宏中。trace!
所以在下面的例子中调用宏:
应该扩展到这样的东西:
可能吗?如果是,那么这样的宏将如何工作?