rust - 使用 Arc 对 Actix 状态变量中的 hashmap 数据进行可变性,但出现“&”引用错误
问题描述
在 routes.rs 代码中,由于出现此类错误,无法修改任何内容。
错误 1:
无法分配引用player_state.guid = 45
后面的内容&
无法分配 rustcE0594
我可以毫无问题地读取所有数据。我试过在这里和那里添加、删除 mut 和 &mut ......我现在迷路了
//routes.rs
#[get("/test_v2")]
async fn test_v2(state_data: web::Data<AppState>,) -> Result<String, ()> {
let mut current_state = &mut state_data.current_state.lock().unwrap();
let mut player_state = &mut current_state.get("player_00").unwrap();
player_state.guid = 45;
Ok(format!(" {:#?}", current_state.get("account_00")))
}
//main.rs
let current_state:Arc<Mutex<HashMap<String, PlayerState>>> = Arc::new(Mutex::new(
blocks::getPlayersStats(pg_pool.clone()).await,
));
HttpServer::new(move || {
let state_data = web::Data::new(AppState {
current_state: current_state.clone(),
});
App::new().app_data(state_data).configure(routes::config)
})
.bind("127.0.0.1:8082")?
.run()
.await
#[derive(Deserialize, Debug, Serialize, Clone)]
pub struct PlayerState {
pub guid: u64,
}
#[derive(Debug)]
pub struct AppState {
pub current_state: Arc<Mutex<HashMap<String, PlayerState>>>,
}
解决方案
推荐阅读
- html - 是否可以使用 AND Fontawesome 类预定义输入?
- ios - 以纵向模式拍摄的图像选择器(UIImagePickerController)中的照片显示为拉伸 - Xcode 11 / SwiftUI
- mysql - Mysql通过添加o减去带有限制的值来更新先前的值
- javascript - Appmaker:如何在客户端获取我刚刚创建的项目的 ID?
- node.js - 错误 npm install 没有适用于 https-proxy-agent-snyk-fork 的有效版本
- three.js - 如何在threejs中获得形状的角落
- laravel-5 - 如何从 6 个月增加飞蛾?
- apache-spark - 为什么 spark submit --files 选项不起作用?
- python - 使用 Python 将 SQL 信息拉入 CSV 并显示为空白
- javascript - 在 vue-cli 3.x 的 watch 模式下每个 webpack 自动构建后如何执行我自己的脚本?