#[repr(C)]pub struct IntervalMonthDayNano {
pub months: i32,
pub days: i32,
pub nanoseconds: i64,
}
Expand description
Value of an IntervalMonthDayNano array
§Representation
This type is stored as a single 128 bit integer, interpreted as three different signed integral fields:
- The number of months (32 bits)
- The number days (32 bits)
- The number of nanoseconds (64 bits).
Nanoseconds does not allow for leap seconds.
Each field is independent (e.g. there is no constraint that the quantity of nanoseconds represents less than a day’s worth of time).
┌───────────────┬─────────────┬─────────────────────────────┐
│ Months │ Days │ Nanos │
│ (32 bits) │ (32 bits) │ (64 bits) │
└───────────────┴─────────────┴─────────────────────────────┘
0 32 64 128 bit offset
Please see the Arrow Spec for more details
§Note on Comparing and Ordering for Calendar Types
Values of IntervalMonthDayNano
are compared using their binary
representation, which can lead to surprising results.
Spans of time measured in calendar units are not fixed in absolute size (e.g.
number of seconds) which makes defining comparisons and ordering non trivial.
For example 1 month
is 28 days for February but 1 month
is 31 days
in December.
This makes the seemingly simple operation of comparing two intervals
complicated in practice. For example is 1 month
more or less than 30 days
? The answer depends on what month you are talking about.
This crate defines comparisons for calendar types using their binary representation which is fast and efficient, but leads to potentially surprising results.
For example a
IntervalMonthDayNano
of 1 month
will compare as greater than a
IntervalMonthDayNano
of 100 days
because the binary representation of 1 month
is larger than the binary representation of 100 days.
Fields§
§months: i32
Number of months
days: i32
Number of days
nanoseconds: i64
Number of nanoseconds
Implementations§
Source§impl IntervalMonthDayNano
impl IntervalMonthDayNano
Sourcepub const ZERO: IntervalMonthDayNano = _
pub const ZERO: IntervalMonthDayNano = _
The additive identity i.e. 0
.
Sourcepub const ONE: IntervalMonthDayNano = _
pub const ONE: IntervalMonthDayNano = _
The multiplicative identity, i.e. 1
.
Sourcepub const MINUS_ONE: IntervalMonthDayNano = _
pub const MINUS_ONE: IntervalMonthDayNano = _
The multiplicative inverse, i.e. -1
.
Sourcepub const MAX: IntervalMonthDayNano = _
pub const MAX: IntervalMonthDayNano = _
The maximum value that can be represented
Sourcepub const MIN: IntervalMonthDayNano = _
pub const MIN: IntervalMonthDayNano = _
The minimum value that can be represented
Sourcepub const fn new(
months: i32,
days: i32,
nanoseconds: i64,
) -> IntervalMonthDayNano
pub const fn new( months: i32, days: i32, nanoseconds: i64, ) -> IntervalMonthDayNano
Create a new IntervalMonthDayNano
Sourcepub fn wrapping_abs(self) -> IntervalMonthDayNano
pub fn wrapping_abs(self) -> IntervalMonthDayNano
Computes the absolute value
Sourcepub fn checked_abs(self) -> Option<IntervalMonthDayNano>
pub fn checked_abs(self) -> Option<IntervalMonthDayNano>
Computes the absolute value
Sourcepub fn wrapping_neg(self) -> IntervalMonthDayNano
pub fn wrapping_neg(self) -> IntervalMonthDayNano
Negates the value
Sourcepub fn checked_neg(self) -> Option<IntervalMonthDayNano>
pub fn checked_neg(self) -> Option<IntervalMonthDayNano>
Negates the value
Sourcepub fn wrapping_add(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_add(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping addition
Sourcepub fn checked_add(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_add( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked addition
Sourcepub fn wrapping_sub(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_sub(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping subtraction
Sourcepub fn checked_sub(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_sub( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked subtraction
Sourcepub fn wrapping_mul(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_mul(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping multiplication
Sourcepub fn checked_mul(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_mul( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked multiplication
Sourcepub fn wrapping_div(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_div(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping division
Sourcepub fn checked_div(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_div( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked division
Sourcepub fn wrapping_rem(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_rem(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping remainder
Sourcepub fn checked_rem(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_rem( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked remainder
Sourcepub fn wrapping_pow(self, exp: u32) -> IntervalMonthDayNano
pub fn wrapping_pow(self, exp: u32) -> IntervalMonthDayNano
Performs wrapping exponentiation
Sourcepub fn checked_pow(self, exp: u32) -> Option<IntervalMonthDayNano>
pub fn checked_pow(self, exp: u32) -> Option<IntervalMonthDayNano>
Performs checked exponentiation
Trait Implementations§
Source§impl<'a, 'b> Add<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Add<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.Source§fn add(
self,
rhs: &'b IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Add<&'b IntervalMonthDayNano>>::Output
fn add( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Add<&'b IntervalMonthDayNano>>::Output
+
operation. Read moreSource§impl<'a> Add<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Add<&'a IntervalMonthDayNano> for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.Source§fn add(
self,
rhs: &'a IntervalMonthDayNano,
) -> <IntervalMonthDayNano as Add<&'a IntervalMonthDayNano>>::Output
fn add( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Add<&'a IntervalMonthDayNano>>::Output
+
operation. Read moreSource§impl<'a> Add<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Add<IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.Source§fn add(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Add<IntervalMonthDayNano>>::Output
fn add( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Add<IntervalMonthDayNano>>::Output
+
operation. Read moreSource§impl Add for IntervalMonthDayNano
impl Add for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.Source§fn add(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Add>::Output
fn add(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Add>::Output
+
operation. Read moreSource§impl AddAssign for IntervalMonthDayNano
impl AddAssign for IntervalMonthDayNano
Source§fn add_assign(&mut self, rhs: IntervalMonthDayNano)
fn add_assign(&mut self, rhs: IntervalMonthDayNano)
+=
operation. Read moreSource§impl ArrowNativeType for IntervalMonthDayNano
impl ArrowNativeType for IntervalMonthDayNano
Source§fn from_usize(_: usize) -> Option<IntervalMonthDayNano>
fn from_usize(_: usize) -> Option<IntervalMonthDayNano>
Source§fn get_byte_width() -> usize
fn get_byte_width() -> usize
Source§fn from_i32(_: i32) -> Option<Self>
fn from_i32(_: i32) -> Option<Self>
Option::Some
insteadSource§impl ArrowNativeTypeOp for IntervalMonthDayNano
impl ArrowNativeTypeOp for IntervalMonthDayNano
Source§const MIN_TOTAL_ORDER: Self = IntervalMonthDayNano::MIN
const MIN_TOTAL_ORDER: Self = IntervalMonthDayNano::MIN
max
aggregation.
Note that the aggregation uses the total order predicate for floating point values,
which means that this value is a negative NaN.Source§const MAX_TOTAL_ORDER: Self = IntervalMonthDayNano::MAX
const MAX_TOTAL_ORDER: Self = IntervalMonthDayNano::MAX
min
aggregation.
Note that the aggregation uses the total order predicate for floating point values,
which means that this value is a positive NaN.Source§fn add_checked(self, rhs: Self) -> Result<Self, ArrowError>
fn add_checked(self, rhs: Self) -> Result<Self, ArrowError>
Source§fn add_wrapping(self, rhs: Self) -> Self
fn add_wrapping(self, rhs: Self) -> Self
Source§fn sub_checked(self, rhs: Self) -> Result<Self, ArrowError>
fn sub_checked(self, rhs: Self) -> Result<Self, ArrowError>
Source§fn sub_wrapping(self, rhs: Self) -> Self
fn sub_wrapping(self, rhs: Self) -> Self
Source§fn mul_checked(self, rhs: Self) -> Result<Self, ArrowError>
fn mul_checked(self, rhs: Self) -> Result<Self, ArrowError>
Source§fn mul_wrapping(self, rhs: Self) -> Self
fn mul_wrapping(self, rhs: Self) -> Self
Source§fn div_checked(self, rhs: Self) -> Result<Self, ArrowError>
fn div_checked(self, rhs: Self) -> Result<Self, ArrowError>
Source§fn div_wrapping(self, rhs: Self) -> Self
fn div_wrapping(self, rhs: Self) -> Self
Source§fn mod_checked(self, rhs: Self) -> Result<Self, ArrowError>
fn mod_checked(self, rhs: Self) -> Result<Self, ArrowError>
Source§fn mod_wrapping(self, rhs: Self) -> Self
fn mod_wrapping(self, rhs: Self) -> Self
Source§fn neg_checked(self) -> Result<Self, ArrowError>
fn neg_checked(self) -> Result<Self, ArrowError>
Source§fn pow_checked(self, exp: u32) -> Result<Self, ArrowError>
fn pow_checked(self, exp: u32) -> Result<Self, ArrowError>
Source§fn pow_wrapping(self, exp: u32) -> Self
fn pow_wrapping(self, exp: u32) -> Self
Source§fn neg_wrapping(self) -> Self
fn neg_wrapping(self) -> Self
Source§impl Clone for IntervalMonthDayNano
impl Clone for IntervalMonthDayNano
Source§fn clone(&self) -> IntervalMonthDayNano
fn clone(&self) -> IntervalMonthDayNano
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for IntervalMonthDayNano
impl Debug for IntervalMonthDayNano
Source§impl Default for IntervalMonthDayNano
impl Default for IntervalMonthDayNano
Source§fn default() -> IntervalMonthDayNano
fn default() -> IntervalMonthDayNano
Source§impl<'a, 'b> Div<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Div<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.Source§fn div(
self,
rhs: &'b IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Div<&'b IntervalMonthDayNano>>::Output
fn div( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Div<&'b IntervalMonthDayNano>>::Output
/
operation. Read moreSource§impl<'a> Div<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Div<&'a IntervalMonthDayNano> for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.Source§fn div(
self,
rhs: &'a IntervalMonthDayNano,
) -> <IntervalMonthDayNano as Div<&'a IntervalMonthDayNano>>::Output
fn div( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Div<&'a IntervalMonthDayNano>>::Output
/
operation. Read moreSource§impl<'a> Div<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Div<IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.Source§fn div(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Div<IntervalMonthDayNano>>::Output
fn div( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Div<IntervalMonthDayNano>>::Output
/
operation. Read moreSource§impl Div for IntervalMonthDayNano
impl Div for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.Source§fn div(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Div>::Output
fn div(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Div>::Output
/
operation. Read moreSource§impl DivAssign for IntervalMonthDayNano
impl DivAssign for IntervalMonthDayNano
Source§fn div_assign(&mut self, rhs: IntervalMonthDayNano)
fn div_assign(&mut self, rhs: IntervalMonthDayNano)
/=
operation. Read moreSource§impl Hash for IntervalMonthDayNano
impl Hash for IntervalMonthDayNano
Source§impl<'a, 'b> Mul<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Mul<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.Source§fn mul(
self,
rhs: &'b IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Mul<&'b IntervalMonthDayNano>>::Output
fn mul( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Mul<&'b IntervalMonthDayNano>>::Output
*
operation. Read moreSource§impl<'a> Mul<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Mul<&'a IntervalMonthDayNano> for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.Source§fn mul(
self,
rhs: &'a IntervalMonthDayNano,
) -> <IntervalMonthDayNano as Mul<&'a IntervalMonthDayNano>>::Output
fn mul( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Mul<&'a IntervalMonthDayNano>>::Output
*
operation. Read moreSource§impl<'a> Mul<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Mul<IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.Source§fn mul(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Mul<IntervalMonthDayNano>>::Output
fn mul( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Mul<IntervalMonthDayNano>>::Output
*
operation. Read moreSource§impl Mul for IntervalMonthDayNano
impl Mul for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.Source§fn mul(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Mul>::Output
fn mul(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Mul>::Output
*
operation. Read moreSource§impl MulAssign for IntervalMonthDayNano
impl MulAssign for IntervalMonthDayNano
Source§fn mul_assign(&mut self, rhs: IntervalMonthDayNano)
fn mul_assign(&mut self, rhs: IntervalMonthDayNano)
*=
operation. Read moreSource§impl Neg for IntervalMonthDayNano
impl Neg for IntervalMonthDayNano
Source§impl Ord for IntervalMonthDayNano
impl Ord for IntervalMonthDayNano
Source§fn cmp(&self, other: &IntervalMonthDayNano) -> Ordering
fn cmp(&self, other: &IntervalMonthDayNano) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for IntervalMonthDayNano
impl PartialEq for IntervalMonthDayNano
Source§impl PartialOrd for IntervalMonthDayNano
impl PartialOrd for IntervalMonthDayNano
Source§impl<'a, 'b> Rem<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Rem<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.Source§fn rem(
self,
rhs: &'b IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Rem<&'b IntervalMonthDayNano>>::Output
fn rem( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Rem<&'b IntervalMonthDayNano>>::Output
%
operation. Read moreSource§impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.Source§fn rem(
self,
rhs: &'a IntervalMonthDayNano,
) -> <IntervalMonthDayNano as Rem<&'a IntervalMonthDayNano>>::Output
fn rem( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Rem<&'a IntervalMonthDayNano>>::Output
%
operation. Read moreSource§impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.Source§fn rem(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Rem<IntervalMonthDayNano>>::Output
fn rem( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Rem<IntervalMonthDayNano>>::Output
%
operation. Read moreSource§impl Rem for IntervalMonthDayNano
impl Rem for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.Source§fn rem(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Rem>::Output
fn rem(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Rem>::Output
%
operation. Read moreSource§impl RemAssign for IntervalMonthDayNano
impl RemAssign for IntervalMonthDayNano
Source§fn rem_assign(&mut self, rhs: IntervalMonthDayNano)
fn rem_assign(&mut self, rhs: IntervalMonthDayNano)
%=
operation. Read moreSource§impl<'a, 'b> Sub<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Sub<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.Source§fn sub(
self,
rhs: &'b IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Sub<&'b IntervalMonthDayNano>>::Output
fn sub( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Sub<&'b IntervalMonthDayNano>>::Output
-
operation. Read moreSource§impl<'a> Sub<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Sub<&'a IntervalMonthDayNano> for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.Source§fn sub(
self,
rhs: &'a IntervalMonthDayNano,
) -> <IntervalMonthDayNano as Sub<&'a IntervalMonthDayNano>>::Output
fn sub( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Sub<&'a IntervalMonthDayNano>>::Output
-
operation. Read moreSource§impl<'a> Sub<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Sub<IntervalMonthDayNano> for &'a IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.Source§fn sub(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Sub<IntervalMonthDayNano>>::Output
fn sub( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Sub<IntervalMonthDayNano>>::Output
-
operation. Read moreSource§impl Sub for IntervalMonthDayNano
impl Sub for IntervalMonthDayNano
Source§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.Source§fn sub(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Sub>::Output
fn sub(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Sub>::Output
-
operation. Read moreSource§impl SubAssign for IntervalMonthDayNano
impl SubAssign for IntervalMonthDayNano
Source§fn sub_assign(&mut self, rhs: IntervalMonthDayNano)
fn sub_assign(&mut self, rhs: IntervalMonthDayNano)
-=
operation. Read more