pub enum Precision<T>{
Exact(T),
Inexact(T),
Absent,
}
Expand description
Represents a value with a degree of certainty. Precision
is used to
propagate information the precision of statistical values.
Variants§
Exact(T)
The exact value is known
Inexact(T)
The value is not known exactly, but is likely close to this value
Absent
Nothing is known about the value
Implementations§
Source§impl<T> Precision<T>
impl<T> Precision<T>
Sourcepub fn get_value(&self) -> Option<&T>
pub fn get_value(&self) -> Option<&T>
If we have some value (exact or inexact), it returns that value.
Otherwise, it returns None
.
Sourcepub fn map<U, F>(self, f: F) -> Precision<U>
pub fn map<U, F>(self, f: F) -> Precision<U>
Transform the value in this Precision
object, if one exists, using
the given function. Preserves the exactness state.
Sourcepub fn is_exact(&self) -> Option<bool>
pub fn is_exact(&self) -> Option<bool>
Returns Some(true)
if we have an exact value, Some(false)
if we
have an inexact value, and None
if there is no value.
Sourcepub fn max(&self, other: &Precision<T>) -> Precision<T>
pub fn max(&self, other: &Precision<T>) -> Precision<T>
Returns the maximum of two (possibly inexact) values, conservatively
propagating exactness information. If one of the input values is
Precision::Absent
, the result is Absent
too.
Sourcepub fn min(&self, other: &Precision<T>) -> Precision<T>
pub fn min(&self, other: &Precision<T>) -> Precision<T>
Returns the minimum of two (possibly inexact) values, conservatively
propagating exactness information. If one of the input values is
Precision::Absent
, the result is Absent
too.
Sourcepub fn to_inexact(self) -> Precision<T>
pub fn to_inexact(self) -> Precision<T>
Demotes the precision state from exact to inexact (if present).
Source§impl Precision<usize>
impl Precision<usize>
Sourcepub fn add(&self, other: &Precision<usize>) -> Precision<usize>
pub fn add(&self, other: &Precision<usize>) -> Precision<usize>
Calculates the sum of two (possibly inexact) usize
values,
conservatively propagating exactness information. If one of the input
values is Precision::Absent
, the result is Absent
too.
Sourcepub fn sub(&self, other: &Precision<usize>) -> Precision<usize>
pub fn sub(&self, other: &Precision<usize>) -> Precision<usize>
Calculates the difference of two (possibly inexact) usize
values,
conservatively propagating exactness information. If one of the input
values is Precision::Absent
, the result is Absent
too.
Sourcepub fn multiply(&self, other: &Precision<usize>) -> Precision<usize>
pub fn multiply(&self, other: &Precision<usize>) -> Precision<usize>
Calculates the multiplication of two (possibly inexact) usize
values,
conservatively propagating exactness information. If one of the input
values is Precision::Absent
, the result is Absent
too.
Sourcepub fn with_estimated_selectivity(self, selectivity: f64) -> Precision<usize>
pub fn with_estimated_selectivity(self, selectivity: f64) -> Precision<usize>
Return the estimate of applying a filter with estimated selectivity
selectivity
to this Precision. A selectivity of 1.0
means that all
rows are selected. A selectivity of 0.5
means half the rows are
selected. Will always return inexact statistics.
Source§impl Precision<ScalarValue>
impl Precision<ScalarValue>
Sourcepub fn add(&self, other: &Precision<ScalarValue>) -> Precision<ScalarValue>
pub fn add(&self, other: &Precision<ScalarValue>) -> Precision<ScalarValue>
Calculates the sum of two (possibly inexact) ScalarValue
values,
conservatively propagating exactness information. If one of the input
values is Precision::Absent
, the result is Absent
too.
Sourcepub fn sub(&self, other: &Precision<ScalarValue>) -> Precision<ScalarValue>
pub fn sub(&self, other: &Precision<ScalarValue>) -> Precision<ScalarValue>
Calculates the difference of two (possibly inexact) ScalarValue
values,
conservatively propagating exactness information. If one of the input
values is Precision::Absent
, the result is Absent
too.
Sourcepub fn multiply(&self, other: &Precision<ScalarValue>) -> Precision<ScalarValue>
pub fn multiply(&self, other: &Precision<ScalarValue>) -> Precision<ScalarValue>
Calculates the multiplication of two (possibly inexact) ScalarValue
values,
conservatively propagating exactness information. If one of the input
values is Precision::Absent
, the result is Absent
too.
Sourcepub fn cast_to(
&self,
data_type: &DataType,
) -> Result<Precision<ScalarValue>, DataFusionError>
pub fn cast_to( &self, data_type: &DataType, ) -> Result<Precision<ScalarValue>, DataFusionError>
Casts the value to the given data type, propagating exactness information.
Trait Implementations§
impl<T> Copy for Precision<T>
impl<T> Eq for Precision<T>
impl<T> StructuralPartialEq for Precision<T>
Auto Trait Implementations§
impl<T> Freeze for Precision<T>where
T: Freeze,
impl<T> RefUnwindSafe for Precision<T>where
T: RefUnwindSafe,
impl<T> Send for Precision<T>where
T: Send,
impl<T> Sync for Precision<T>where
T: Sync,
impl<T> Unpin for Precision<T>where
T: Unpin,
impl<T> UnwindSafe for Precision<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> AlignerFor<1> for T
impl<T> AlignerFor<1> for T
Source§impl<T> AlignerFor<1024> for T
impl<T> AlignerFor<1024> for T
Source§type Aligner = AlignTo1024<T>
type Aligner = AlignTo1024<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<128> for T
impl<T> AlignerFor<128> for T
Source§type Aligner = AlignTo128<T>
type Aligner = AlignTo128<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<16> for T
impl<T> AlignerFor<16> for T
Source§impl<T> AlignerFor<16384> for T
impl<T> AlignerFor<16384> for T
Source§type Aligner = AlignTo16384<T>
type Aligner = AlignTo16384<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<2> for T
impl<T> AlignerFor<2> for T
Source§impl<T> AlignerFor<2048> for T
impl<T> AlignerFor<2048> for T
Source§type Aligner = AlignTo2048<T>
type Aligner = AlignTo2048<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<256> for T
impl<T> AlignerFor<256> for T
Source§type Aligner = AlignTo256<T>
type Aligner = AlignTo256<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<32> for T
impl<T> AlignerFor<32> for T
Source§impl<T> AlignerFor<32768> for T
impl<T> AlignerFor<32768> for T
Source§type Aligner = AlignTo32768<T>
type Aligner = AlignTo32768<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<4> for T
impl<T> AlignerFor<4> for T
Source§impl<T> AlignerFor<4096> for T
impl<T> AlignerFor<4096> for T
Source§type Aligner = AlignTo4096<T>
type Aligner = AlignTo4096<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<512> for T
impl<T> AlignerFor<512> for T
Source§type Aligner = AlignTo512<T>
type Aligner = AlignTo512<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.Source§impl<T> AlignerFor<64> for T
impl<T> AlignerFor<64> for T
Source§impl<T> AlignerFor<8> for T
impl<T> AlignerFor<8> for T
Source§impl<T> AlignerFor<8192> for T
impl<T> AlignerFor<8192> for T
Source§type Aligner = AlignTo8192<T>
type Aligner = AlignTo8192<T>
AlignTo*
type which aligns Self
to ALIGNMENT
.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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 moreSource§impl<'a, T> RCowCompatibleRef<'a> for Twhere
T: Clone + 'a,
impl<'a, T> RCowCompatibleRef<'a> for Twhere
T: Clone + 'a,
Source§fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC
fn as_c_ref(from: &'a T) -> <T as RCowCompatibleRef<'a>>::RefC
Source§fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T
fn as_rust_ref(from: <T as RCowCompatibleRef<'a>>::RefC) -> &'a T
Source§impl<S> ROExtAcc for S
impl<S> ROExtAcc for S
Source§fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
fn f_get<F>(&self, offset: FieldOffset<S, F, Aligned>) -> &F
offset
. Read moreSource§fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
fn f_get_mut<F>(&mut self, offset: FieldOffset<S, F, Aligned>) -> &mut F
offset
. Read moreSource§fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
fn f_get_ptr<F, A>(&self, offset: FieldOffset<S, F, A>) -> *const F
offset
. Read moreSource§fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
fn f_get_mut_ptr<F, A>(&mut self, offset: FieldOffset<S, F, A>) -> *mut F
offset
. Read moreSource§impl<S> ROExtOps<Aligned> for S
impl<S> ROExtOps<Aligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Aligned>, value: F) -> F
offset
) with value
,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Aligned>) -> Fwhere
F: Copy,
Source§impl<S> ROExtOps<Unaligned> for S
impl<S> ROExtOps<Unaligned> for S
Source§fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
fn f_replace<F>(&mut self, offset: FieldOffset<S, F, Unaligned>, value: F) -> F
offset
) with value
,
returning the previous value of the field. Read moreSource§fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
fn f_get_copy<F>(&self, offset: FieldOffset<S, F, Unaligned>) -> Fwhere
F: Copy,
Source§impl<T> SelfOps for Twhere
T: ?Sized,
impl<T> SelfOps for Twhere
T: ?Sized,
Source§fn piped<F, U>(self, f: F) -> U
fn piped<F, U>(self, f: F) -> U
Source§fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
fn piped_ref<'a, F, U>(&'a self, f: F) -> Uwhere
F: FnOnce(&'a Self) -> U,
piped
except that the function takes &Self
Useful for functions that take &Self
instead of Self
. Read moreSource§fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
fn piped_mut<'a, F, U>(&'a mut self, f: F) -> Uwhere
F: FnOnce(&'a mut Self) -> U,
piped
, except that the function takes &mut Self
.
Useful for functions that take &mut Self
instead of Self
.Source§fn mutated<F>(self, f: F) -> Self
fn mutated<F>(self, f: F) -> Self
Source§fn observe<F>(self, f: F) -> Self
fn observe<F>(self, f: F) -> Self
Source§fn as_ref_<T>(&self) -> &T
fn as_ref_<T>(&self) -> &T
AsRef
,
using the turbofish .as_ref_::<_>()
syntax. Read more