pub struct BucketSize(/* private fields */);Expand description
Bucket coalescing interval stored in milliseconds.
Validated newtype controlling how aggressively increments are merged into buckets.
Increments occurring within this interval of each other are coalesced into the same bucket, reducing memory usage and improving performance at the cost of timing granularity.
§Validation
- Must be >= 1
- Typical values: 10-100 milliseconds
§Trade-offs
Larger values (50-100ms):
- Lower memory usage and overhead
- Coarser rejection metadata
Smaller values (1-20ms):
- More accurate timing and rejection metadata
- Higher memory usage
§Examples
use trypema::BucketSize;
let coalescing = BucketSize::milliseconds(10).unwrap();
assert_eq!(coalescing.as_milliseconds(), 10);
let aggressive = BucketSize::milliseconds(100).unwrap();
let precise = BucketSize::milliseconds_or_panic(1);
let _ = (aggressive, precise);
// Invalid
assert!(BucketSize::milliseconds(0).is_err());Implementations§
Source§impl BucketSize
impl BucketSize
Sourcepub fn as_milliseconds(self) -> u64
pub fn as_milliseconds(self) -> u64
Return bucket-coalescing interval in milliseconds.
Sourcepub fn milliseconds(value: u64) -> Result<Self, TrypemaError>
pub fn milliseconds(value: u64) -> Result<Self, TrypemaError>
Create a bucket size expressed in milliseconds.
Sourcepub fn milliseconds_or_panic(value: u64) -> Self
pub fn milliseconds_or_panic(value: u64) -> Self
Sourcepub fn seconds(value: u64) -> Result<Self, TrypemaError>
pub fn seconds(value: u64) -> Result<Self, TrypemaError>
Create a bucket size expressed in seconds.
Sourcepub fn seconds_or_panic(value: u64) -> Self
pub fn seconds_or_panic(value: u64) -> Self
Create a bucket size expressed in seconds.
§Panics
Panics when value is zero or conversion overflows.
Sourcepub fn minutes(value: u64) -> Result<Self, TrypemaError>
pub fn minutes(value: u64) -> Result<Self, TrypemaError>
Create a bucket size expressed in minutes.
Sourcepub fn minutes_or_panic(value: u64) -> Self
pub fn minutes_or_panic(value: u64) -> Self
Create a bucket size expressed in minutes.
§Panics
Panics when value is zero or conversion overflows.
Sourcepub fn hours(value: u64) -> Result<Self, TrypemaError>
pub fn hours(value: u64) -> Result<Self, TrypemaError>
Create a bucket size expressed in hours.
Sourcepub fn hours_or_panic(value: u64) -> Self
pub fn hours_or_panic(value: u64) -> Self
Sourcepub fn days(value: u64) -> Result<Self, TrypemaError>
pub fn days(value: u64) -> Result<Self, TrypemaError>
Create a bucket size expressed in days.
Sourcepub fn days_or_panic(value: u64) -> Self
pub fn days_or_panic(value: u64) -> Self
Sourcepub fn weeks(value: u64) -> Result<Self, TrypemaError>
pub fn weeks(value: u64) -> Result<Self, TrypemaError>
Create a bucket size expressed in weeks.
Sourcepub fn weeks_or_panic(value: u64) -> Self
pub fn weeks_or_panic(value: u64) -> Self
Sourcepub fn months(value: u64) -> Result<Self, TrypemaError>
pub fn months(value: u64) -> Result<Self, TrypemaError>
Create a bucket size expressed in 30-day months.
Sourcepub fn months_or_panic(value: u64) -> Self
pub fn months_or_panic(value: u64) -> Self
Create a bucket size expressed in 30-day months.
§Panics
Panics when value is zero or conversion overflows.
Trait Implementations§
Source§impl Clone for BucketSize
impl Clone for BucketSize
Source§fn clone(&self) -> BucketSize
fn clone(&self) -> BucketSize
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more