diff --git a/apps/ai-game-creator-shell/src-tauri/src/export/draft/taonier/build.rs b/apps/ai-game-creator-shell/src-tauri/src/export/draft/taonier/build.rs index 8114b2b8b..37f1f3316 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/export/draft/taonier/build.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/export/draft/taonier/build.rs @@ -239,7 +239,7 @@ pub(crate) fn read_artifact_package(root: &Path) -> Result Result Result<(Vec, String), String> { +/// +/// 调用方已经确认过 `expected_bytes` 在上限内,按它预分配容量即可,避免接近 200 MiB 的包在 +/// 反复扩容时多复制约一倍数据。 +fn read_package_bytes(path: &Path, expected_bytes: u64) -> Result<(Vec, String), String> { let mut file = std::fs::File::open(path) .map_err(|error| format!("打开陶泥儿产物失败:{}:{error}", path.display()))?; let mut hasher = Sha256::new(); - let mut bytes = Vec::new(); + let mut bytes = Vec::with_capacity(expected_bytes as usize); let mut buffer = vec![0u8; PACKAGE_READ_CHUNK_BYTES]; loop { let read = file