我想在`main()`之外的模块中启动Rocket但是失败了

llx*_*xbb 4 rust rust-rocket

我想在一个模块中启动 Rocket main(),这样可以简化,main()但我失败了。我从火箭修改了Quicktart

编码:

mod myRocket {
    #![feature(plugin)]
    #![plugin(rocket_codegen)]
    extern crate rocket;

    #[get("/")]
    fn index() -> &'static str {
        "Hello, world!"
    }

    pub fn startup() {
        rocket::ignite().mount("/", routes![index]).launch();
    }
}


fn main() {
    myRocket::startup();
}
Run Code Online (Sandbox Code Playgroud)

错误:

error: cannot find macro `routes!` in this scope
--> src\main.rs:12:37
|
12 |         rocket::ignite().mount("/", routes![index]).launch();
|
Run Code Online (Sandbox Code Playgroud)

我不知道如何修复它。

llx*_*xbb 6

我达到了。我的项目的箱子是rocket_demo

主文件

extern crate rocket_demo; 

use rocket_demo::my_rocket;

fn main() {
    my_rocket::startup();
}
Run Code Online (Sandbox Code Playgroud)

库文件

#![feature(plugin)]
#![plugin(rocket_codegen)]
extern crate rocket;

pub mod my_rocket;
Run Code Online (Sandbox Code Playgroud)

前三行不能在my_rocket/mod.rs,否则routes!找不到!

my_rocket/mod.rs

#[get("/")]
fn index() -> &'static str {
    "Hello, world!"
}

pub fn startup() {
    ::rocket::ignite().mount("/", routes![index]).launch();
}
Run Code Online (Sandbox Code Playgroud)