From fb80c7d5e4c82fdcc2a589c818b0cb32c01b7746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 3 Oct 2026 10:54:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E8=A1=8C=E5=8C=85=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E7=94=A8=20From=20=E6=94=B6=E6=95=9B=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E5=8C=96=E9=94=99=E8=AF=AF=EF=BC=8C=E6=9B=BF=E6=8D=A2=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E7=9A=84=20map=5Ferr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 GamePackageUploadError 实现 From for String - upload_staged_game_package 中三处 .map_err(|e| e.to_user_msg()) 改为 ?,Fatal 分支改为 error.into() --- .../src/game_package_upload/runtime.rs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/game_package_upload/runtime.rs b/apps/ai-game-creator-shell/src-tauri/src/game_package_upload/runtime.rs index 14049b120..7fdc8c17b 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/game_package_upload/runtime.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/game_package_upload/runtime.rs @@ -130,6 +130,13 @@ impl GamePackageUploadError { } } +/// 上传编排对外只回一句 `String`,让 `?` 直接完成结构化错误到用户文案的收敛。 +impl From for String { + fn from(error: GamePackageUploadError) -> Self { + error.to_user_msg() + } +} + async fn read_upload_state( client: &reqwest::Client, base_url: &str, @@ -336,8 +343,7 @@ pub(crate) async fn upload_staged_game_package( request.version_id, &access_token, ) - .await - .map_err(|error| error.to_user_msg())?; + .await?; if state.declared_package_bytes != 0 && state.declared_package_bytes != total_bytes { return Err(format!( "本地发行包与版本声明的体积不一致(本地 {} 字节,声明 {} 字节),请重新导出后再发布", @@ -374,7 +380,7 @@ pub(crate) async fn upload_staged_game_package( on_progress(received, total_bytes); break; } - Err(ChunkUploadError::Fatal(error)) => return Err(error.to_user_msg()), + Err(ChunkUploadError::Fatal(error)) => return Err(error.into()), Err(ChunkUploadError::Retryable(error)) => { if attempt >= CHUNK_MAX_ATTEMPTS { return Err(format!( @@ -395,8 +401,7 @@ pub(crate) async fn upload_staged_game_package( request.version_id, &access_token, ) - .await - .map_err(|error| error.to_user_msg())?; + .await?; received = authoritative.received_bytes.min(total_bytes); on_progress(received, total_bytes); } @@ -408,8 +413,7 @@ pub(crate) async fn upload_staged_game_package( &access_token, request.idempotency_key, ) - .await - .map_err(|error| error.to_user_msg())?; + .await?; outcome.uploaded_bytes = total_bytes; Ok(outcome) }