(作为新手)我在编译应用程序时遇到麻烦。这可能是最明显的细节,但我正在努力理解正在发生的事情。
我正在为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)我可以在struct中声明函数并将其作为返回应用程序的工厂/生成器返回?