Struct IntervalMonthDayNano
#[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§
§impl IntervalMonthDayNano
impl IntervalMonthDayNano
pub const ZERO: IntervalMonthDayNano = _
pub const ZERO: IntervalMonthDayNano = _
The additive identity i.e. 0
.
pub const ONE: IntervalMonthDayNano = _
pub const ONE: IntervalMonthDayNano = _
The multiplicative identity, i.e. 1
.
pub const MINUS_ONE: IntervalMonthDayNano = _
pub const MINUS_ONE: IntervalMonthDayNano = _
The multiplicative inverse, i.e. -1
.
pub const MAX: IntervalMonthDayNano = _
pub const MAX: IntervalMonthDayNano = _
The maximum value that can be represented
pub const MIN: IntervalMonthDayNano = _
pub const MIN: IntervalMonthDayNano = _
The minimum value that can be represented
pub 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
pub fn wrapping_abs(self) -> IntervalMonthDayNano
pub fn wrapping_abs(self) -> IntervalMonthDayNano
Computes the absolute value
pub fn checked_abs(self) -> Option<IntervalMonthDayNano>
pub fn checked_abs(self) -> Option<IntervalMonthDayNano>
Computes the absolute value
pub fn wrapping_neg(self) -> IntervalMonthDayNano
pub fn wrapping_neg(self) -> IntervalMonthDayNano
Negates the value
pub fn checked_neg(self) -> Option<IntervalMonthDayNano>
pub fn checked_neg(self) -> Option<IntervalMonthDayNano>
Negates the value
pub fn wrapping_add(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_add(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping addition
pub fn checked_add(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_add( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked addition
pub fn wrapping_sub(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_sub(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping subtraction
pub fn checked_sub(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_sub( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked subtraction
pub fn wrapping_mul(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_mul(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping multiplication
pub fn checked_mul(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_mul( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked multiplication
pub fn wrapping_div(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_div(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping division
pub fn checked_div(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_div( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked division
pub fn wrapping_rem(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
pub fn wrapping_rem(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano
Performs wrapping remainder
pub fn checked_rem(
self,
other: IntervalMonthDayNano,
) -> Option<IntervalMonthDayNano>
pub fn checked_rem( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>
Performs checked remainder
pub fn wrapping_pow(self, exp: u32) -> IntervalMonthDayNano
pub fn wrapping_pow(self, exp: u32) -> IntervalMonthDayNano
Performs wrapping exponentiation
pub fn checked_pow(self, exp: u32) -> Option<IntervalMonthDayNano>
pub fn checked_pow(self, exp: u32) -> Option<IntervalMonthDayNano>
Performs checked exponentiation
Trait Implementations§
§impl<'a, 'b> Add<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Add<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.§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 more§impl<'a> Add<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Add<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.§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 more§impl<'a> Add<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Add<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.§fn add(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Add<IntervalMonthDayNano>>::Output
fn add( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Add<IntervalMonthDayNano>>::Output
+
operation. Read more§impl Add for IntervalMonthDayNano
impl Add for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.§fn add(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Add>::Output
fn add(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Add>::Output
+
operation. Read more§impl AddAssign for IntervalMonthDayNano
impl AddAssign for IntervalMonthDayNano
§fn add_assign(&mut self, rhs: IntervalMonthDayNano)
fn add_assign(&mut self, rhs: IntervalMonthDayNano)
+=
operation. Read more§impl ArrowNativeType for IntervalMonthDayNano
impl ArrowNativeType for IntervalMonthDayNano
§fn from_usize(_: usize) -> Option<IntervalMonthDayNano>
fn from_usize(_: usize) -> Option<IntervalMonthDayNano>
§fn usize_as(i: usize) -> IntervalMonthDayNano
fn usize_as(i: usize) -> IntervalMonthDayNano
as
operator§fn get_byte_width() -> usize
fn get_byte_width() -> usize
Source§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
§impl Clone for IntervalMonthDayNano
impl Clone for IntervalMonthDayNano
§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 more§impl Debug for IntervalMonthDayNano
impl Debug for IntervalMonthDayNano
§impl Default for IntervalMonthDayNano
impl Default for IntervalMonthDayNano
§fn default() -> IntervalMonthDayNano
fn default() -> IntervalMonthDayNano
§impl<'a, 'b> Div<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Div<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.§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 more§impl<'a> Div<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Div<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.§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 more§impl<'a> Div<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Div<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.§fn div(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Div<IntervalMonthDayNano>>::Output
fn div( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Div<IntervalMonthDayNano>>::Output
/
operation. Read more§impl Div for IntervalMonthDayNano
impl Div for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.§fn div(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Div>::Output
fn div(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Div>::Output
/
operation. Read more§impl DivAssign for IntervalMonthDayNano
impl DivAssign for IntervalMonthDayNano
§fn div_assign(&mut self, rhs: IntervalMonthDayNano)
fn div_assign(&mut self, rhs: IntervalMonthDayNano)
/=
operation. Read more§impl Hash for IntervalMonthDayNano
impl Hash for IntervalMonthDayNano
§impl<'a, 'b> Mul<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Mul<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.§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 more§impl<'a> Mul<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Mul<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.§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 more§impl<'a> Mul<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Mul<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.§fn mul(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Mul<IntervalMonthDayNano>>::Output
fn mul( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Mul<IntervalMonthDayNano>>::Output
*
operation. Read more§impl Mul for IntervalMonthDayNano
impl Mul for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.§fn mul(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Mul>::Output
fn mul(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Mul>::Output
*
operation. Read more§impl MulAssign for IntervalMonthDayNano
impl MulAssign for IntervalMonthDayNano
§fn mul_assign(&mut self, rhs: IntervalMonthDayNano)
fn mul_assign(&mut self, rhs: IntervalMonthDayNano)
*=
operation. Read more§impl Neg for IntervalMonthDayNano
impl Neg for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.§impl Ord for IntervalMonthDayNano
impl Ord for IntervalMonthDayNano
§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,
§impl PartialEq for IntervalMonthDayNano
impl PartialEq for IntervalMonthDayNano
§impl PartialOrd for IntervalMonthDayNano
impl PartialOrd for IntervalMonthDayNano
§impl<'a, 'b> Rem<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Rem<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.§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 more§impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.§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 more§impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.§fn rem(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Rem<IntervalMonthDayNano>>::Output
fn rem( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Rem<IntervalMonthDayNano>>::Output
%
operation. Read more§impl Rem for IntervalMonthDayNano
impl Rem for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.§fn rem(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Rem>::Output
fn rem(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Rem>::Output
%
operation. Read more§impl RemAssign for IntervalMonthDayNano
impl RemAssign for IntervalMonthDayNano
§fn rem_assign(&mut self, rhs: IntervalMonthDayNano)
fn rem_assign(&mut self, rhs: IntervalMonthDayNano)
%=
operation. Read more§impl<'a, 'b> Sub<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a, 'b> Sub<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.§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 more§impl<'a> Sub<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Sub<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.§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 more§impl<'a> Sub<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Sub<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.§fn sub(
self,
rhs: IntervalMonthDayNano,
) -> <&'a IntervalMonthDayNano as Sub<IntervalMonthDayNano>>::Output
fn sub( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Sub<IntervalMonthDayNano>>::Output
-
operation. Read more§impl Sub for IntervalMonthDayNano
impl Sub for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.§fn sub(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Sub>::Output
fn sub(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Sub>::Output
-
operation. Read more§impl SubAssign for IntervalMonthDayNano
impl SubAssign for IntervalMonthDayNano
§fn sub_assign(&mut self, rhs: IntervalMonthDayNano)
fn sub_assign(&mut self, rhs: IntervalMonthDayNano)
-=
operation. Read more