我正在编写一个API服务器,并希望读入配置文件并将该信息传递给请求处理程序。我无法让Rust允许这种情况发生。
$doctrine = $kernel->getContainer()->get('doctrine');
self::assertInstanceOf(EntityManagerInterface::class, $doctrine);
我当前遇到的错误是
let cfg = Arc::new(read_config());
let server = HttpServer::new(|| {
App::new()
.wrap(middleware::Logger::default())
.service(web::resource("/api/files").route(web::get().to(move || {
list_files(cfg.clone());
})))
.service(fs::Files::new("/", "client/public").index_file("index.html"))
});
该如何完成?将变量传递给请求处理程序的正确方法是什么?
答案 0 :(得分:0)
这是因为您有2个关闭级别。第一个是HttpServer :: new()的参数,该参数是固定的:它捕获对cfg的引用,然后您尝试将其移至第二个闭包web :: get()。to()。 / p>
如果您在第一个闭合中创建一个克隆,则可以将其移至第二个闭合中,如下所示:
let cfg = Arc::new(read_config());
let server = HttpServer::new(|| {
let cfg = cfg.clone();
App::new()
.wrap(middleware::Logger::default())
.service(web::resource("/api/files").route(web::get().to(move || {
list_files(cfg);
})))
.service(fs::Files::new("/", "client/public").index_file("index.html"))
});