Struct arrow_buffer::IntervalMonthDayNano
source · #[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
§days: i32
§nanoseconds: i64
Implementations§
source§impl IntervalMonthDayNano
impl IntervalMonthDayNano
sourcepub const fn new(months: i32, days: i32, nanoseconds: i64) -> Self
pub const fn new(months: i32, days: i32, nanoseconds: i64) -> Self
Create a new IntervalMonthDayNano
sourcepub fn wrapping_abs(self) -> Self
pub fn wrapping_abs(self) -> Self
Computes the absolute value
sourcepub fn checked_abs(self) -> Option<Self>
pub fn checked_abs(self) -> Option<Self>
Computes the absolute value
sourcepub fn wrapping_neg(self) -> Self
pub fn wrapping_neg(self) -> Self
Negates the value
sourcepub fn checked_neg(self) -> Option<Self>
pub fn checked_neg(self) -> Option<Self>
Negates the value
sourcepub fn wrapping_add(self, other: Self) -> Self
pub fn wrapping_add(self, other: Self) -> Self
Performs wrapping addition
sourcepub fn checked_add(self, other: Self) -> Option<Self>
pub fn checked_add(self, other: Self) -> Option<Self>
Performs checked addition
sourcepub fn wrapping_sub(self, other: Self) -> Self
pub fn wrapping_sub(self, other: Self) -> Self
Performs wrapping subtraction
sourcepub fn checked_sub(self, other: Self) -> Option<Self>
pub fn checked_sub(self, other: Self) -> Option<Self>
Performs checked subtraction
sourcepub fn wrapping_mul(self, other: Self) -> Self
pub fn wrapping_mul(self, other: Self) -> Self
Performs wrapping multiplication
sourcepub fn checked_mul(self, other: Self) -> Option<Self>
pub fn checked_mul(self, other: Self) -> Option<Self>
Performs checked multiplication
sourcepub fn wrapping_div(self, other: Self) -> Self
pub fn wrapping_div(self, other: Self) -> Self
Performs wrapping division
sourcepub fn checked_div(self, other: Self) -> Option<Self>
pub fn checked_div(self, other: Self) -> Option<Self>
Performs checked division
sourcepub fn wrapping_rem(self, other: Self) -> Self
pub fn wrapping_rem(self, other: Self) -> Self
Performs wrapping remainder
sourcepub fn checked_rem(self, other: Self) -> Option<Self>
pub fn checked_rem(self, other: Self) -> Option<Self>
Performs checked remainder
sourcepub fn wrapping_pow(self, exp: u32) -> Self
pub fn wrapping_pow(self, exp: u32) -> Self
Performs wrapping exponentiation
sourcepub fn checked_pow(self, exp: u32) -> Option<Self>
pub fn checked_pow(self, exp: u32) -> Option<Self>
Performs checked exponentiation
Trait Implementations§
source§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.source§impl<'a> Add<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Add<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.source§impl<'a> Add<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Add<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
+
operator.source§impl Add for IntervalMonthDayNano
impl Add for IntervalMonthDayNano
source§impl AddAssign for IntervalMonthDayNano
impl AddAssign for IntervalMonthDayNano
source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
+=
operation. Read moresource§impl ArrowNativeType for IntervalMonthDayNano
impl ArrowNativeType for 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 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
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.source§impl<'a> Div<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Div<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.source§impl<'a> Div<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Div<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
/
operator.source§impl Div for IntervalMonthDayNano
impl Div for IntervalMonthDayNano
source§impl DivAssign for IntervalMonthDayNano
impl DivAssign for IntervalMonthDayNano
source§fn div_assign(&mut self, rhs: Self)
fn div_assign(&mut self, rhs: Self)
/=
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
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.source§impl<'a> Mul<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Mul<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.source§impl<'a> Mul<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Mul<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
*
operator.source§impl Mul for IntervalMonthDayNano
impl Mul for IntervalMonthDayNano
source§impl MulAssign for IntervalMonthDayNano
impl MulAssign for IntervalMonthDayNano
source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
*=
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§fn eq(&self, other: &IntervalMonthDayNano) -> bool
fn eq(&self, other: &IntervalMonthDayNano) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for IntervalMonthDayNano
impl PartialOrd for IntervalMonthDayNano
source§fn partial_cmp(&self, other: &IntervalMonthDayNano) -> Option<Ordering>
fn partial_cmp(&self, other: &IntervalMonthDayNano) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§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.source§impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.source§impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
%
operator.source§impl Rem for IntervalMonthDayNano
impl Rem for IntervalMonthDayNano
source§impl RemAssign for IntervalMonthDayNano
impl RemAssign for IntervalMonthDayNano
source§fn rem_assign(&mut self, rhs: Self)
fn rem_assign(&mut self, rhs: Self)
%=
operation. Read moresource§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.source§impl<'a> Sub<&'a IntervalMonthDayNano> for IntervalMonthDayNano
impl<'a> Sub<&'a IntervalMonthDayNano> for IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.source§impl<'a> Sub<IntervalMonthDayNano> for &'a IntervalMonthDayNano
impl<'a> Sub<IntervalMonthDayNano> for &'a IntervalMonthDayNano
§type Output = IntervalMonthDayNano
type Output = IntervalMonthDayNano
-
operator.source§impl Sub for IntervalMonthDayNano
impl Sub for IntervalMonthDayNano
source§impl SubAssign for IntervalMonthDayNano
impl SubAssign for IntervalMonthDayNano
source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
-=
operation. Read moreimpl Copy for IntervalMonthDayNano
impl Eq for IntervalMonthDayNano
impl StructuralPartialEq for IntervalMonthDayNano
Auto Trait Implementations§
impl Freeze for IntervalMonthDayNano
impl RefUnwindSafe for IntervalMonthDayNano
impl Send for IntervalMonthDayNano
impl Sync for IntervalMonthDayNano
impl Unpin for IntervalMonthDayNano
impl UnwindSafe for IntervalMonthDayNano
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)