我一直在我的一个程序中使用#[tokio::main]
宏.在导入main
并使用它之后,我遇到了一个意外的错误.
use tokio::main;
#[main]
async fn main() {}
error[E0659]: `main` is ambiguous
--> src/main.rs:3:3
|
3 | #[main]
| ^^^^ ambiguous name
|
= note: ambiguous because of a name conflict with a builtin attribute
= note: `main` could refer to a built-in attribute
我一直在浏览文档,但在任何地方都找不到这个内置的#[main]
属性.The Rust Reference contains an index of built-in attributes.该指数不包括#[main]
,但包括an attribute named #[no_main]
.
我搜索了rustlang/rust
存储库,找到了some code that seems related个,但它似乎使用了一对名为#[start]
和#[rustc_main]
的宏,而没有提到#[main]
本身.(这两个宏在stable上似乎都不可用,#[start]
发出一个不稳定的错误,#[rustc_main]
发出一个只供编译器内部使用的错误.)
我从这个名字猜测,它是用来将一个不同的函数标记为入口点,而不是main
,但它似乎也没有这样做:
#[main]
fn something_else() {
println!("this does not run");
}
fn main() {
println!("this runs");
}
Rust Analyzer没有太多可以提供的功能:
除了与我的导入冲突外,内置的#[main]
属性还有什么作用??