为什么我们要将 listenHTTP 中的指针传递给 &handleRequest?

Why we should pass pointer in listenHTTP to &handleRequest?

我正在阅读 vibed 示例,下一刻无法理解:

import vibe.d;

shared static this()
{
    auto settings = new HTTPServerSettings;
    settings.port = 8080;

    listenHTTP(settings, &handleRequest);
}

void handleRequest(HTTPServerRequest req,
                   HTTPServerResponse res)
{
    if (req.path == "/")
        res.writeBody("Hello, World!", "text/plain");
}

为什么我们将 listenHTTP 指针传递给 &handleRequest。我的意思是为什么我们不能简单地为每个请求调用它?

那么 HTTPServerRequest reqHTTPServerResponse res 呢?他们是在 handleRequest 调用时创建的还是什么时候创建的?

指针是库如何知道您希望它在每次请求时调用什么函数。

您将指向该函数的指针传递给它,然后 vibe 在该点创建 req 和 res,并在每次收到新请求时调用指向的函数。

如果您尝试在没有指针的情况下传递 handleRequest,它会在请求实际准备好之前尝试在设置时调用它。