diff --git a/server-rs/crates/platform-image/src/vector_engine/raw_edit.rs b/server-rs/crates/platform-image/src/vector_engine/raw_edit.rs index a749f06db..1bb1d2e25 100644 --- a/server-rs/crates/platform-image/src/vector_engine/raw_edit.rs +++ b/server-rs/crates/platform-image/src/vector_engine/raw_edit.rs @@ -25,6 +25,8 @@ pub struct RawImageEditOptions { } #[derive(Clone, Debug)] +/// Multipart input owned by the raw-edit endpoint. `Bytes` keeps the Axum +/// upload buffer shared until reqwest consumes it, avoiding a full-image copy. pub struct RawImageEditImage { pub bytes: Bytes, pub mime_type: String, @@ -489,4 +491,18 @@ mod tests { "raw_image_edit:构造请求客户端失败:builder failed" ); } + + #[test] + fn raw_edit_image_owns_shared_bytes_without_conversion() { + let bytes = bytes::Bytes::from_static(b"raw-image"); + let pointer = bytes.as_ptr(); + let image = RawImageEditImage { + bytes, + mime_type: "image/png".to_string(), + file_name: "image.png".to_string(), + }; + + assert_eq!(image.bytes.as_ptr(), pointer); + assert_eq!(image.bytes.as_ref(), b"raw-image"); + } }