You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将actix-web的web::Json<User>转换为&mut User?

解决方法

要将web::Json<User>转换为&mut User,核心是先获取User实例的所有权,再将其转为可变变量,最后获取可变引用。具体修改如下:

#[post("/users")]
pub async fn create_user(
    db_connector: web::Data<DBConnector>,
    user: web::Json<User>,
) -> impl Responder {
    // 从web::Json中取出User实例,获得所有权并转为可变变量
    let mut user_data = user.into_inner();
    
    match db_connector.create_user(&mut user_data).await {
        Ok(_) => HttpResponse::Created().finish(),
        Err(e) => HttpResponse::InternalServerError().body(e.to_string()),
    }
}

关键说明

  • web::Json<T>的into_inner()方法会转移内部T实例的所有权,返回一个T类型的值,而不是引用。
  • 把这个值赋值给mut修饰的变量后,就可以通过&mut操作符获取它的可变引用,满足create_user()方法的参数要求。
  • 这样create_user()就能在后台修改user_data的字段(比如添加ID、创建日期),因为可变引用允许对实例进行修改。

内容的提问来源于stack exchange,提问作者Rusty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:12:01