我正在制作自己的属性宏并注意到一个问题。
添加宏时
#[GET("/")]
fn index() {
load!("../static/index.html")
}
随着错误的出现,它隐藏在宏后面,没有确切的输出行和错误的地方
error[E0308]: mismatched types
--> src\main.rs:3:1
|
3 | #[GET("/")]
| ^^^^^^^^^^^
| |
| expected `u8`, found `&str`
| expected due to this
|
= note: this error originates in the attribute macro `GET` (in Nightly builds, run with -Z macro-backtrace for more info)
有什么方法可以解决这个问题?
我明白出了什么问题。
在宏的实现中,我曾多次转换String/TokenStream类型之间的输入。由此,编译器将输出视为宏的实现中的错误,而不是其输入中的错误。
为避免这种情况,
Block请将必要的部件保持原状。并且可以通过解析为结构来修改必要的实现syn。但同时,即使从 解析为结构体syn,再通过 进行后续转换quote!,错误跟踪依然存在,块码中的错误也能正确显示。因此,值得部分放弃滥用
Regex,转而支持手动配置。