Skip to main content

UploadError

Struct UploadError 

Source
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: Error

The 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

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for UploadError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for UploadError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<UploadError> for Error

Source§

fn from(e: UploadError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.