Skip to main content

DownloadSpec

Struct DownloadSpec 

Source
pub struct DownloadSpec { /* private fields */ }
Expand description

Specification for a download task.

Implementations§

Source§

impl DownloadSpec

Source

pub fn new(url: impl Into<String>) -> Self

Create a new download specification for the given URL.

All other fields are populated with sensible defaults: 4 connections, 1 MiB pieces, 64 MiB memory budget, resume enabled, etc.

Source

pub fn get_url(&self) -> &str

Returns the download URL.

Source

pub fn get_output_path(&self) -> Option<&Path>

Returns the explicit output file path, if set.

Source

pub fn get_output_dir(&self) -> Option<&Path>

Returns the output directory (filename will be derived from the URL or Content-Disposition header).

Source

pub fn get_headers(&self) -> &HashMap<String, String>

Returns the custom HTTP headers that will be sent with every request.

Source

pub fn get_max_connections(&self) -> u32

Returns the maximum number of parallel connections.

Source

pub fn get_connect_timeout(&self) -> Duration

Returns the TCP connect timeout.

Source

pub fn get_all_proxy(&self) -> Option<&str>

Returns the proxy applied to all HTTP/HTTPS requests, if set.

Source

pub fn get_pool_max_idle_per_host(&self) -> usize

Returns the maximum idle HTTP connections kept per host.

Source

pub fn get_pool_idle_timeout(&self) -> Duration

Returns how long idle pooled HTTP connections are retained.

Source

pub fn get_http_proxy(&self) -> Option<&str>

Returns the proxy applied only to plain HTTP requests, if set.

Source

pub fn get_https_proxy(&self) -> Option<&str>

Returns the proxy applied only to HTTPS requests, if set.

Source

pub fn get_read_timeout(&self) -> Duration

Returns the per-request read timeout.

Source

pub fn get_memory_budget(&self) -> usize

Returns the memory budget (in bytes) for the write-back cache.

Source

pub fn get_file_allocation(&self) -> FileAllocation

Returns the file allocation strategy.

Source

pub fn get_channel_buffer(&self) -> usize

Returns the internal channel buffer size.

Source

pub fn get_resume(&self) -> bool

Returns whether resume is enabled.

Source

pub fn get_piece_size(&self) -> u64

Returns the piece size in bytes used for multi-connection splitting.

Source

pub fn get_min_split_size(&self) -> u64

Returns the minimum file size required before the download is split across multiple connections.

Source

pub fn get_min_segment_size(&self) -> u64

Returns the minimum sub-segment size used by dynamic multi-worker splitting.

Source

pub fn get_max_retries(&self) -> u32

Returns the maximum number of retry attempts per segment.

Source

pub fn get_retry_base_delay(&self) -> Duration

Returns the base delay for exponential backoff between retries.

Source

pub fn get_retry_max_delay(&self) -> Duration

Returns the maximum delay cap for exponential backoff.

Source

pub fn get_max_retry_elapsed(&self) -> Option<Duration>

Returns the optional total elapsed retry budget.

Source

pub fn get_max_download_speed(&self) -> u64

Returns the maximum download speed in bytes/sec (0 = unlimited).

Source

pub fn get_checksum(&self) -> Option<&Checksum>

Returns the checksum used for post-download verification, if set.

Source

pub fn get_control_save_interval(&self) -> Duration

Returns the interval for periodic control-file saves.

Source

pub fn get_autosave_sync_every(&self) -> u32

Returns how many autosave ticks are coalesced into one durable save.

Source

pub fn output_path(self, output_path: impl Into<PathBuf>) -> Self

Set the explicit output file path.

Source

pub fn output_dir(self, output_dir: impl Into<PathBuf>) -> Self

Set the output directory. The filename will be derived automatically from the URL or Content-Disposition response header.

Source

pub fn headers(self, headers: HashMap<String, String>) -> Self

Set custom HTTP headers to include in every request.

Source

pub fn max_connections(self, max_connections: u32) -> Self

Set the maximum number of parallel connections (default: 4).

Source

pub fn connect_timeout(self, connect_timeout: Duration) -> Self

Set the TCP connect timeout (default: 30 s).

Source

pub fn http_idle_pool( self, max_idle_per_host: usize, idle_timeout: Duration, ) -> Self

Configure the experimental HTTP idle pool for this download only.

Source

pub fn disable_http_idle_pool(self) -> Self

Disable HTTP idle connection reuse for this download even if the downloader enables it.

Source

pub fn all_proxy(self, proxy: impl Into<String>) -> Self

Set a proxy applied to all HTTP/HTTPS requests for this download only.

Source

pub fn http_proxy(self, proxy: impl Into<String>) -> Self

Set a proxy applied only to plain HTTP requests for this download.

Source

pub fn https_proxy(self, proxy: impl Into<String>) -> Self

Set a proxy applied only to HTTPS requests for this download.

Source

pub fn read_timeout(self, read_timeout: Duration) -> Self

Set the per-request read timeout (default: 60 s).

Source

pub fn memory_budget(self, memory_budget: usize) -> Self

Set the memory budget in bytes for the write-back cache (default: 64 MiB).

Source

pub fn file_allocation(self, file_allocation: FileAllocation) -> Self

Set the file allocation strategy (default: FileAllocation::Prealloc).

Source

pub fn channel_buffer(self, channel_buffer: usize) -> Self

Set the internal channel buffer size (default: 64).

Source

pub fn resume(self, resume: bool) -> Self

Enable or disable resume support (default: true).

Source

pub fn piece_size(self, piece_size: u64) -> Self

Set the piece size in bytes for multi-connection splitting (default: 1 MiB).

Source

pub fn min_split_size(self, min_split_size: u64) -> Self

Set the minimum file size before splitting across connections (default: 10 MiB).

Source

pub fn min_segment_size(self, min_segment_size: u64) -> Self

Set the minimum sub-segment size for dynamic multi-worker splitting.

Source

pub fn max_retries(self, max_retries: u32) -> Self

Set the maximum retry attempts per segment (default: 5).

Source

pub fn retry_base_delay(self, retry_base_delay: Duration) -> Self

Set the base delay for exponential backoff (default: 1 s).

Source

pub fn retry_max_delay(self, retry_max_delay: Duration) -> Self

Set the maximum delay cap for exponential backoff (default: 30 s).

Source

pub fn max_retry_elapsed(self, max_retry_elapsed: Duration) -> Self

Set the total elapsed retry budget for a single request.

Source

pub fn retry_policy( self, max_retries: u32, retry_base_delay: Duration, retry_max_delay: Duration, ) -> Self

Configure the full retry policy in one call.

Source

pub fn max_download_speed(self, max_download_speed: u64) -> Self

Set the maximum download speed in bytes/sec (default: 0 = unlimited).

Source

pub fn checksum(self, checksum: Checksum) -> Self

Set the checksum for post-download integrity verification.

Source

pub fn control_save_interval(self, interval: Duration) -> Self

Set the interval for periodic control-file saves (default: 5 s).

Source

pub fn autosave_sync_every(self, autosave_sync_every: u32) -> Self

Save a durable autosave every N autosave ticks that have unsaved progress.

Source

pub fn validate(&self) -> Result<(), DownloadError>

Validate the configuration and return an error if any value is out of range.

Trait Implementations§

Source§

impl Clone for DownloadSpec

Source§

fn clone(&self) -> DownloadSpec

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DownloadSpec

Source§

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

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more