#[macro_use] extern crate rocket;
#[cfg(test)] mod tests;
#[derive(FromFormField)]
enum Lang {
#[field(value = "en")]
English,
#[field(value = "ru")]
#[field(value = "ру")]
Russian
}
在rust中我遇到大部分的类似代码,请问各位大佬这是什么意思,是做什么的? 是指定的语法吗? 是否有哪些可以方便记下来的窍门呢? 如果没有窍门的话,那么如何决定什么时候使用,什么时候不需要使用?
1
共 7 条评论, 1 页
评论区
写评论正在,还没看到这。提前看到该语法就产生了些迷惑。感谢哈
--
👇
苦瓜小仔: 你给错链接了啦。这个链接讲的是声明宏。
这是属性宏,Rust 不止有这一种宏。
Rust book > ch19-06-macros 对各种宏介绍地很清楚,楼主,你学 Rust 连这本“圣经”都不看看嘛?
--
👇
chinagxwei: https://zjp-cn.github.io/tlborm/
可以看看社区之前发的
--
👇
MutelyMilo: 追问大佬,所以这种语法全是宏,没有其他例外的吧
--
👇
chinagxwei: 可以去看看rust宏相关的内容
你给错链接了啦。这个链接讲的是声明宏。
这是属性宏,Rust 不止有这一种宏。
Rust book > ch19-06-macros 对各种宏介绍地很清楚,楼主,你学 Rust 连这本“圣经”都不看看嘛?
--
👇
chinagxwei: https://zjp-cn.github.io/tlborm/
可以看看社区之前发的
--
👇
MutelyMilo: 追问大佬,所以这种语法全是宏,没有其他例外的吧
--
👇
chinagxwei: 可以去看看rust宏相关的内容
https://zjp-cn.github.io/tlborm/
可以看看社区之前发的
--
👇
MutelyMilo: 追问大佬,所以这种语法全是宏,没有其他例外的吧
--
👇
chinagxwei: 可以去看看rust宏相关的内容
十分感谢,茅塞顿开。
--
👇
Aya0wind: 这是属性宏,属性宏有的是库里自定义提供的,有的是rust自带的。你可以类比一下java里的注解,用于开关一些特性或者生成代码的。 至于记忆,其实没啥要记的,记个基本的语法就行了,也就是#[属性名=“属性值“],或者#[属性名(属性值)],这种语法。因为这个东西的内容是完全可自定义的,比如你这里面就有三方库定义的属性宏。重要的应该是去看库给的文档,文档里说明了这些属性都有什么意义。例如你这里的#[derive(xx)],这个宏就是用来给结构体自动实现括号里的那个trait,编译器在展开这个宏后会生成一段用于实现这个trait的代码。 而对于像#[macro_use]这样的编译器提供的属性,就查rust文档就行了,比如这个宏就是指明导出其作用的那个crate里面的宏。
这是属性宏,属性宏有的是库里自定义提供的,有的是rust自带的。你可以类比一下java里的注解,用于开关一些特性或者生成代码的。 至于记忆,其实没啥要记的,记个基本的语法就行了,也就是#[属性名=“属性值“],或者#[属性名(属性值)],这种语法。因为这个东西的内容是完全可自定义的,比如你这里面就有三方库定义的属性宏。重要的应该是去看库给的文档,文档里说明了这些属性都有什么意义。例如你这里的#[derive(xx)],这个宏就是用来给结构体自动实现括号里的那个trait,编译器在展开这个宏后会生成一段用于实现这个trait的代码。 而对于像#[macro_use]这样的编译器提供的属性,就查rust文档就行了,比如这个宏就是指明导出其作用的那个crate里面的宏。
追问大佬,所以这种语法全是宏,没有其他例外的吧
--
👇
chinagxwei: 可以去看看rust宏相关的内容
可以去看看rust宏相关的内容