我試圖用封閉宣佈我的路線:麻煩與封傳鐵處理器在路由器聲明
use mongodb::Client;
pub fn get_user_routes(client: Client) -> Router {
let controller = controller::UserController::new(client);
let handler = handlers::UserHandler::new(controller);
router!(
index: get "/" => move |r: &mut Request| handler.index(r),
show: get "/:id" => move |r: &mut Request| handler.show(r),
)
}
我得到這個錯誤,我無法實現Copy
的特質對我UserController
因爲mongodb::Client
沒有實現它(這是一個Arc
)。
error[E0382]: capture of moved value: `handler`
--> src/api/users/mod.rs:17:57
|
16 | index: get "/" => move |r: &mut Request| handler.index(r),
| ---------------------- value moved (into closure) here
17 | show: get "/:id" => move |r: &mut Request| handler.show(r),
| ^^^^^^^ value captured here after move
|
= note: move occurs because `handler` has type `api::users::handlers::UserHandler`, which does not implement the `Copy` trait
我UserHandler
只是有一個UserController
和UserController
,一個mongodb::Client
。
您保存了我的重構! – NotBad4U