2

根据文档,我可以status通过调用status_mut(). 不幸的是,处理函数的签名,用于使用 hyper::Server 服务请求包含 immutable 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:最后我找到了这个例子。就在源代码中。=*)

4

1 回答 1

3

Rust 中的可变性是继承的,因此您只需将参数标记为可变即可获得可变性:

pub fn handle_request(req: Request, mut res: Response<Fresh>){
    let status: &mut StatusCode = res.status_mut();
}

这是可能的,因为此函数Response<Fresh>按值接受 - 如果它通过引用接受它:&Response<Fresh>,则根本不可能修改它。

于 2015-04-14T09:07:13.190 回答