pub struct UploadError {
pub source: Error,
pub partial: Option<ObjectHandle>,
}Expand description
Error from an upload, carrying the handle of the object the device created
during SendObjectInfo before the data phase failed.
PTP uploads are two-phase: SendObjectInfo creates the object on the device
(returning a handle), then SendObject streams the bytes. If the data phase
fails or is cancelled, the device is left holding a partial (often empty or
truncated) object. This error surfaces that handle so the caller owns the
cleanup-or-resume decision, rather than the library guessing.
The library does not auto-delete the partial object: deleting it would
issue hidden USB I/O to a possibly-disconnected device, the leave-vs-delete
behavior is device-dependent, and PTP’s two-phase model is designed so a
failed SendObject can be retried against the same handle (resume).
[From<UploadError> for Error] keeps ? ergonomic for callers working in an
Error context; they drop the partial handle unless
they match on UploadError explicitly.
Fields§
§source: ErrorThe underlying failure (I/O, protocol, cancellation, timeout, …).
partial: Option<ObjectHandle>The handle of the partially-written object the device may still hold.
Some iff SendObjectInfo succeeded but the data phase did not complete
(genuine error OR cancellation). The object may be empty or truncated. The
caller decides: delete it (for example, Storage::delete) to discard the
corrupt artifact, or retry the data phase to resume.
None iff no object was created (for example, SendObjectInfo itself
failed because the storage is read-only or the parent is invalid).
Trait Implementations§
Source§impl Debug for UploadError
impl Debug for UploadError
Source§impl Display for UploadError
impl Display for UploadError
Source§impl Error for UploadError
impl Error for UploadError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()