pub struct PtpUploadError {
pub source: PtpError,
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<PtpUploadError> for PtpError] keeps ? ergonomic for callers working in a
PtpError context; they drop the partial handle unless
they match on PtpUploadError explicitly.
This is the low-level PTP-layer upload error. The high-level crate::mtp API
has its own backend-neutral crate::mtp::UploadError.
Fields§
§source: PtpErrorThe 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 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 PtpUploadError
impl Debug for PtpUploadError
Source§impl Display for PtpUploadError
impl Display for PtpUploadError
Source§impl Error for PtpUploadError
impl Error for PtpUploadError
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()