0
我使用nickel.rs写在鲁斯特的端点:不能借用`* request`为可变,因为它是还借为不可改变
{
let client = client.clone();
let mongodb = MongoRepository::new(client,"rust-users".into());
router.put("https://stackoverflow.com/users/:id",middleware!( |request ,mut response |{
let id = try_with!(response,{request.param("id").ok_or((StatusCode::BadRequest, "Id parameter required")) });
let user = try_with!(response,{request.json_as::<User>()
.map_err(|e| (StatusCode::BadRequest, format!("{}",e)))});
let update_id = try_with!(response,{mongodb.update_by_id("users",id,user)
.map_err(|e| (StatusCode::InternalServerError, e))});
ApiResult::Ok(StatusCode::Ok,update_id.to_json())
}));
}
在这一行:
let id = try_with!(response,{request.param("id").ok_or((StatusCode::BadRequest, "Id parameter required")) });
request
是以不可变的状态借来的,但在这一行中:
let user = try_with!(response,{request.json_as::<User>()
.map_err(|e| (StatusCode::BadRequest, format!("{}",e)))});
请求是在一个可变的sta TE。这会导致以下错误:
error: cannot borrow
*request
as mutable because it is also borrowed as immutable
我试图通过包装在一个单独的范围id
线来解决这个错误,但问题依然存在。
我不知道如何解决这个问题。代码中有其他问题吗?
通过试验和错误我终于弄清楚了我的错误。感谢您的支持:) – menawi