如何在超 HTTP 服务器处理程序中设置 HTTP 状态代码?
How can I set HTTP status code in hyper HTTP Server handler?
根据 documentation,我可以通过调用 status_mut()
获得对 status
的可变引用。不幸的是,用于处理 hyper::Server 请求的处理程序函数的签名包含不可变的 Response
,因此以下代码给我一个错误:
pub fn handle_request(req: Request, res: Response<Fresh>){
let status: &mut StatusCode = res.status_mut();
}
error: cannot borrow immutable local variable `res` as mutable
有没有什么方法可以在 hyper::server::Server 使用的请求处理程序中设置响应状态代码?
UPD: 我终于找到了例子。就在 source code 中。 =*)
Rust 中的可变性是继承的,因此您只需将参数标记为可变即可获得可变性:
pub fn handle_request(req: Request, mut res: Response<Fresh>){
let status: &mut StatusCode = res.status_mut();
}
这是可能的,因为此函数按值接受 Response<Fresh>
- 如果它按引用接受它:&Response<Fresh>
,则根本不可能修改它。
根据 documentation,我可以通过调用 status_mut()
获得对 status
的可变引用。不幸的是,用于处理 hyper::Server 请求的处理程序函数的签名包含不可变的 Response
,因此以下代码给我一个错误:
pub fn handle_request(req: Request, res: Response<Fresh>){
let status: &mut StatusCode = res.status_mut();
}
error: cannot borrow immutable local variable `res` as mutable
有没有什么方法可以在 hyper::server::Server 使用的请求处理程序中设置响应状态代码?
UPD: 我终于找到了例子。就在 source code 中。 =*)
Rust 中的可变性是继承的,因此您只需将参数标记为可变即可获得可变性:
pub fn handle_request(req: Request, mut res: Response<Fresh>){
let status: &mut StatusCode = res.status_mut();
}
这是可能的,因为此函数按值接受 Response<Fresh>
- 如果它按引用接受它:&Response<Fresh>
,则根本不可能修改它。