pub struct ParallelConfig {
pub enabled: bool,
pub max_concurrent: usize,
pub per_package_timeout: Duration,
}Expand description
Configuration for parallel publishing.
Parallel publishing allows independent crates in a workspace to be published concurrently, significantly reducing total publish time for large workspaces with many independent crates.
§Example
use std::time::Duration;
use shipper::types::ParallelConfig;
// Default: sequential publishing
let sequential = ParallelConfig::default();
// Enable parallel publishing
let parallel = ParallelConfig {
enabled: true,
max_concurrent: 4,
per_package_timeout: Duration::from_secs(1800), // 30 minutes
};§How It Works
Shipper analyzes the dependency graph and groups crates into “levels”. Crates at the same level have no dependencies on each other and can be published in parallel. Crates at higher levels must wait for all crates at lower levels to complete.
§Defaults
enabled:false(sequential by default)max_concurrent: 4per_package_timeout: 1800 seconds (30 minutes)
Fields§
§enabled: boolEnable parallel publishing (default: false for sequential)
When disabled (the default), crates are published one at a time in dependency order. When enabled, independent crates are published concurrently.
max_concurrent: usizeMaximum number of concurrent publish operations (default: 4)
The maximum number of crates that can be publishing simultaneously. This limits resource usage and API rate limiting impact.
per_package_timeout: DurationTimeout per package publish operation (default: 30 minutes)
If a single package publish takes longer than this duration, it will be aborted and retried. This prevents a slow publish from blocking the entire operation.
Trait Implementations§
Source§impl Clone for ParallelConfig
impl Clone for ParallelConfig
Source§fn clone(&self) -> ParallelConfig
fn clone(&self) -> ParallelConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more