我在编译我的应用程序时遇到了麻烦(作为新手)。这可能是最明显的细节,但我正在努力理解正在发生的事情。
我正在为 Actix Web 服务器库编写一个包装器结构。我的结构是这样定义的:
struct CustomServer {
connections: IncomingRequets,
server: HttpServer<App, fn() -> App>,
address: String,
port: i32,
}
我正在尝试创建结构并通过函数返回它:
let address: Handle<JsString> = cx.argument::<JsString>(0)?;
let port: Handle<JsNumber> = cx.argument::<JsNumber>(1)?;
let server = server::new(|| {
App::new()
.middleware(middleware::Logger::default())
.default_resource(|r| r.f(index))
});
// Export the server struct
CustomServer {
address: address.value(),
port: port.value() as i32,
server: server,
connections: IncomingRequets {
requests: HashMap::new(),
},
}
expected fn pointer, found closure
. 我确实明白这可能是由于我对如何声明具体结构和类型的理解中缺失的部分。我也明白我传递的是一个闭包而不是一个函数。
所以我的思考过程是:a)我如何将闭包声明为HttpServer
参数的一部分,或者b)我可以在结构中声明函数并将其作为返回应用程序的工厂/生成器返回吗?