pub struct ExtendedStatistics { /* private fields */ }Expand description
Statistics with support for custom extensions.
Wraps the standard Statistics and adds a type-erased extension map
for custom statistics like histograms, sketches, or domain-specific metadata.
§Example
ⓘ
// Define a custom statistics extension
#[derive(Debug, Clone)]
struct HistogramStats {
buckets: Vec<(i64, i64, usize)>, // (min, max, count)
}
// Set extension in a planner
let mut stats = ExtendedStatistics::from(base_stats);
stats.set_extension(HistogramStats { buckets: vec![] });
// Retrieve in a consumer
if let Some(hist) = stats.get_extension::<HistogramStats>() {
// Use histogram for better estimation
}Implementations§
Source§impl ExtendedStatistics
impl ExtendedStatistics
Sourcepub fn new(base: Statistics) -> Self
pub fn new(base: Statistics) -> Self
Create new ExtendedStatistics wrapping owned statistics.
Sourcepub fn new_arc(base: Arc<Statistics>) -> Self
pub fn new_arc(base: Arc<Statistics>) -> Self
Create new ExtendedStatistics from an Arc<Statistics>.
Sourcepub fn base(&self) -> &Statistics
pub fn base(&self) -> &Statistics
Returns a reference to the base Statistics.
Sourcepub fn base_arc(&self) -> &Arc<Statistics> ⓘ
pub fn base_arc(&self) -> &Arc<Statistics> ⓘ
Returns a reference to the underlying Arc<Statistics>.
Sourcepub fn get_extension<T: 'static + Send + Sync>(&self) -> Option<&T>
pub fn get_extension<T: 'static + Send + Sync>(&self) -> Option<&T>
Get a reference to a custom statistics extension by type.
Sourcepub fn set_extension<T: 'static + Send + Sync>(&mut self, value: T)
pub fn set_extension<T: 'static + Send + Sync>(&mut self, value: T)
Set a custom statistics extension.
Sourcepub fn has_extension<T: 'static + Send + Sync>(&self) -> bool
pub fn has_extension<T: 'static + Send + Sync>(&self) -> bool
Check if an extension of the given type exists.
Sourcepub fn merge_extensions(&mut self, other: &ExtendedStatistics)
pub fn merge_extensions(&mut self, other: &ExtendedStatistics)
Merge extensions from another ExtendedStatistics (other’s extensions take precedence).
Trait Implementations§
Source§impl Clone for ExtendedStatistics
impl Clone for ExtendedStatistics
Source§fn clone(&self) -> ExtendedStatistics
fn clone(&self) -> ExtendedStatistics
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ExtendedStatistics
impl Debug for ExtendedStatistics
Source§impl Default for ExtendedStatistics
impl Default for ExtendedStatistics
Source§fn default() -> ExtendedStatistics
fn default() -> ExtendedStatistics
Returns the “default value” for a type. Read more
Source§impl From<Arc<Statistics>> for ExtendedStatistics
impl From<Arc<Statistics>> for ExtendedStatistics
Source§fn from(base: Arc<Statistics>) -> Self
fn from(base: Arc<Statistics>) -> Self
Converts to this type from the input type.
Source§impl From<ExtendedStatistics> for Statistics
impl From<ExtendedStatistics> for Statistics
Source§fn from(extended: ExtendedStatistics) -> Self
fn from(extended: ExtendedStatistics) -> Self
Converts to this type from the input type.
Source§impl From<Statistics> for ExtendedStatistics
impl From<Statistics> for ExtendedStatistics
Source§fn from(base: Statistics) -> Self
fn from(base: Statistics) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl !RefUnwindSafe for ExtendedStatistics
impl !UnwindSafe for ExtendedStatistics
impl Freeze for ExtendedStatistics
impl Send for ExtendedStatistics
impl Sync for ExtendedStatistics
impl Unpin for ExtendedStatistics
impl UnsafeUnpin for ExtendedStatistics
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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