pub struct Config { /* private fields */ }Expand description
Configuration for parallel processing behavior.
Simplified configuration with essential fields for both document-level and file-level parallelism.
§Security Limits
To prevent denial-of-service attacks and resource exhaustion:
- Maximum threads: 128
- Maximum input size: 100MB (configurable via
max_input_size)
§Examples
use fast_yaml_parallel::Config;
let config = Config::new()
.with_workers(Some(8))
.with_sequential_threshold(2048);Implementations§
Source§impl Config
impl Config
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates default configuration.
§Examples
use fast_yaml_parallel::Config;
let config = Config::new();Sourcepub const fn with_workers(self, workers: Option<usize>) -> Self
pub const fn with_workers(self, workers: Option<usize>) -> Self
Sets worker count.
None: Auto-detect CPU count (default, capped at 128)Some(0): Sequential processing (no parallelism)Some(n): Use exactlynthreads (capped at 128)
§Security
Thread count is capped at 128 to prevent resource exhaustion.
§Examples
use fast_yaml_parallel::Config;
let config = Config::new().with_workers(Some(4));Sourcepub const fn with_mmap_threshold(self, threshold: usize) -> Self
pub const fn with_mmap_threshold(self, threshold: usize) -> Self
Sets memory-map threshold for file reading.
Files larger than this threshold will use memory-mapped I/O. Default: 512KB
§Tuning Guidance
The optimal threshold depends on your workload:
-
Lower (256KB-512KB): Better for many medium files (100KB-1MB)
- Pros: Less virtual memory pressure, faster for small-to-medium files
- Cons: More heap allocations for files just above threshold
-
Higher (1MB-2MB): Better for fewer large files (>2MB)
- Pros: Fewer mmaps, better for very large files
- Cons: More heap usage for medium files
Consider your typical file size distribution and available memory. Profile with real data before changing the default.
§Examples
use fast_yaml_parallel::Config;
let config = Config::new()
.with_mmap_threshold(1024 * 1024); // 1MBSourcepub const fn with_max_input_size(self, size: usize) -> Self
pub const fn with_max_input_size(self, size: usize) -> Self
Sourcepub const fn with_sequential_threshold(self, threshold: usize) -> Self
pub const fn with_sequential_threshold(self, threshold: usize) -> Self
Sets sequential processing threshold.
Inputs smaller than this threshold will use sequential processing to avoid parallelism overhead. Default: 4KB
§Examples
use fast_yaml_parallel::Config;
let config = Config::new()
.with_sequential_threshold(2048);Sourcepub const fn mmap_threshold(&self) -> usize
pub const fn mmap_threshold(&self) -> usize
Returns mmap threshold.
Sourcepub const fn max_input_size(&self) -> usize
pub const fn max_input_size(&self) -> usize
Returns maximum input size.
Sourcepub const fn sequential_threshold(&self) -> usize
pub const fn sequential_threshold(&self) -> usize
Returns sequential threshold.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more