arrow::datatypes

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:

  1. The number of months (32 bits)
  2. The number days (32 bits)
  3. 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

pub const ZERO: IntervalMonthDayNano = _

The additive identity i.e. 0.

pub const ONE: IntervalMonthDayNano = _

The multiplicative identity, i.e. 1.

pub const MINUS_ONE: IntervalMonthDayNano = _

The multiplicative inverse, i.e. -1.

pub const MAX: IntervalMonthDayNano = _

The maximum value that can be represented

pub const MIN: IntervalMonthDayNano = _

The minimum value that can be represented

pub const fn new( months: i32, days: i32, nanoseconds: i64, ) -> IntervalMonthDayNano

Create a new IntervalMonthDayNano

pub fn wrapping_abs(self) -> IntervalMonthDayNano

Computes the absolute value

pub fn checked_abs(self) -> Option<IntervalMonthDayNano>

Computes the absolute value

pub fn wrapping_neg(self) -> IntervalMonthDayNano

Negates the value

pub fn checked_neg(self) -> Option<IntervalMonthDayNano>

Negates the value

pub fn wrapping_add(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano

Performs wrapping addition

pub fn checked_add( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>

Performs checked addition

pub fn wrapping_sub(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano

Performs wrapping subtraction

pub fn checked_sub( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>

Performs checked subtraction

pub fn wrapping_mul(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano

Performs wrapping multiplication

pub fn checked_mul( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>

Performs checked multiplication

pub fn wrapping_div(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano

Performs wrapping division

pub fn checked_div( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>

Performs checked division

pub fn wrapping_rem(self, other: IntervalMonthDayNano) -> IntervalMonthDayNano

Performs wrapping remainder

pub fn checked_rem( self, other: IntervalMonthDayNano, ) -> Option<IntervalMonthDayNano>

Performs checked remainder

pub fn wrapping_pow(self, exp: u32) -> IntervalMonthDayNano

Performs wrapping exponentiation

pub fn checked_pow(self, exp: u32) -> Option<IntervalMonthDayNano>

Performs checked exponentiation

Trait Implementations§

§

impl<'a, 'b> Add<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the + operator.
§

fn add( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Add<&'b IntervalMonthDayNano>>::Output

Performs the + operation. Read more
§

impl<'a> Add<&'a IntervalMonthDayNano> for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the + operator.
§

fn add( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Add<&'a IntervalMonthDayNano>>::Output

Performs the + operation. Read more
§

impl<'a> Add<IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the + operator.
§

fn add( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Add<IntervalMonthDayNano>>::Output

Performs the + operation. Read more
§

impl Add for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the + operator.
§

fn add(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Add>::Output

Performs the + operation. Read more
§

impl AddAssign for IntervalMonthDayNano

§

fn add_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the += operation. Read more
§

impl ArrowNativeType for IntervalMonthDayNano

§

fn from_usize(_: usize) -> Option<IntervalMonthDayNano>

Convert native integer type from usize Read more
§

fn as_usize(self) -> usize

Convert to usize according to the as operator
§

fn usize_as(i: usize) -> IntervalMonthDayNano

Convert from usize according to the as operator
§

fn to_usize(self) -> Option<usize>

Convert native type to usize. Read more
§

fn to_isize(self) -> Option<isize>

Convert native type to isize. Read more
§

fn to_i64(self) -> Option<i64>

Convert native type to i64. Read more
§

fn get_byte_width() -> usize

Returns the byte width of this native type.
§

impl ArrowNativeTypeOp for IntervalMonthDayNano

§

const ZERO: IntervalMonthDayNano = IntervalMonthDayNano::ZERO

The additive identity
§

const ONE: IntervalMonthDayNano = IntervalMonthDayNano::ONE

The multiplicative identity
§

const MIN_TOTAL_ORDER: IntervalMonthDayNano = IntervalMonthDayNano::MIN

The minimum value and identity for the max aggregation. Note that the aggregation uses the total order predicate for floating point values, which means that this value is a negative NaN.
§

const MAX_TOTAL_ORDER: IntervalMonthDayNano = IntervalMonthDayNano::MAX

The maximum value and identity for the min aggregation. Note that the aggregation uses the total order predicate for floating point values, which means that this value is a positive NaN.
§

fn add_checked( self, rhs: IntervalMonthDayNano, ) -> Result<IntervalMonthDayNano, ArrowError>

Checked addition operation
§

fn add_wrapping(self, rhs: IntervalMonthDayNano) -> IntervalMonthDayNano

Wrapping addition operation
§

fn sub_checked( self, rhs: IntervalMonthDayNano, ) -> Result<IntervalMonthDayNano, ArrowError>

Checked subtraction operation
§

fn sub_wrapping(self, rhs: IntervalMonthDayNano) -> IntervalMonthDayNano

Wrapping subtraction operation
§

fn mul_checked( self, rhs: IntervalMonthDayNano, ) -> Result<IntervalMonthDayNano, ArrowError>

Checked multiplication operation
§

fn mul_wrapping(self, rhs: IntervalMonthDayNano) -> IntervalMonthDayNano

Wrapping multiplication operation
§

fn div_checked( self, rhs: IntervalMonthDayNano, ) -> Result<IntervalMonthDayNano, ArrowError>

Checked division operation
§

fn div_wrapping(self, rhs: IntervalMonthDayNano) -> IntervalMonthDayNano

Wrapping division operation
§

fn mod_checked( self, rhs: IntervalMonthDayNano, ) -> Result<IntervalMonthDayNano, ArrowError>

Checked remainder operation
§

fn mod_wrapping(self, rhs: IntervalMonthDayNano) -> IntervalMonthDayNano

Wrapping remainder operation
§

fn neg_checked(self) -> Result<IntervalMonthDayNano, ArrowError>

Checked negation operation
§

fn pow_checked(self, exp: u32) -> Result<IntervalMonthDayNano, ArrowError>

Checked exponentiation operation
§

fn pow_wrapping(self, exp: u32) -> IntervalMonthDayNano

Wrapping exponentiation operation
§

fn neg_wrapping(self) -> IntervalMonthDayNano

Wrapping negation operation
§

fn is_zero(self) -> bool

Returns true if zero else false
§

fn compare(self, rhs: IntervalMonthDayNano) -> Ordering

Compare operation
§

fn is_eq(self, rhs: IntervalMonthDayNano) -> bool

Equality operation
§

fn is_ne(self, rhs: Self) -> bool

Not equal operation
§

fn is_lt(self, rhs: Self) -> bool

Less than operation
§

fn is_le(self, rhs: Self) -> bool

Less than equals operation
§

fn is_gt(self, rhs: Self) -> bool

Greater than operation
§

fn is_ge(self, rhs: Self) -> bool

Greater than equals operation
§

impl Clone for IntervalMonthDayNano

§

fn clone(&self) -> IntervalMonthDayNano

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Debug for IntervalMonthDayNano

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Default for IntervalMonthDayNano

§

fn default() -> IntervalMonthDayNano

Returns the “default value” for a type. Read more
§

impl<'a, 'b> Div<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the / operator.
§

fn div( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Div<&'b IntervalMonthDayNano>>::Output

Performs the / operation. Read more
§

impl<'a> Div<&'a IntervalMonthDayNano> for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the / operator.
§

fn div( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Div<&'a IntervalMonthDayNano>>::Output

Performs the / operation. Read more
§

impl<'a> Div<IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the / operator.
§

fn div( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Div<IntervalMonthDayNano>>::Output

Performs the / operation. Read more
§

impl Div for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the / operator.
§

fn div(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Div>::Output

Performs the / operation. Read more
§

impl DivAssign for IntervalMonthDayNano

§

fn div_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the /= operation. Read more
§

impl Hash for IntervalMonthDayNano

§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl<'a, 'b> Mul<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the * operator.
§

fn mul( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Mul<&'b IntervalMonthDayNano>>::Output

Performs the * operation. Read more
§

impl<'a> Mul<&'a IntervalMonthDayNano> for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the * operator.
§

fn mul( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Mul<&'a IntervalMonthDayNano>>::Output

Performs the * operation. Read more
§

impl<'a> Mul<IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the * operator.
§

fn mul( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Mul<IntervalMonthDayNano>>::Output

Performs the * operation. Read more
§

impl Mul for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the * operator.
§

fn mul(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Mul>::Output

Performs the * operation. Read more
§

impl MulAssign for IntervalMonthDayNano

§

fn mul_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the *= operation. Read more
§

impl Neg for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
§

fn neg(self) -> <IntervalMonthDayNano as Neg>::Output

Performs the unary - operation. Read more
§

impl Ord for IntervalMonthDayNano

§

fn cmp(&self, other: &IntervalMonthDayNano) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
§

impl PartialEq for IntervalMonthDayNano

§

fn eq(&self, other: &IntervalMonthDayNano) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl PartialOrd for IntervalMonthDayNano

§

fn partial_cmp(&self, other: &IntervalMonthDayNano) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
§

impl<'a, 'b> Rem<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the % operator.
§

fn rem( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Rem<&'b IntervalMonthDayNano>>::Output

Performs the % operation. Read more
§

impl<'a> Rem<&'a IntervalMonthDayNano> for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the % operator.
§

fn rem( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Rem<&'a IntervalMonthDayNano>>::Output

Performs the % operation. Read more
§

impl<'a> Rem<IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the % operator.
§

fn rem( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Rem<IntervalMonthDayNano>>::Output

Performs the % operation. Read more
§

impl Rem for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the % operator.
§

fn rem(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Rem>::Output

Performs the % operation. Read more
§

impl RemAssign for IntervalMonthDayNano

§

fn rem_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the %= operation. Read more
§

impl<'a, 'b> Sub<&'b IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
§

fn sub( self, rhs: &'b IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Sub<&'b IntervalMonthDayNano>>::Output

Performs the - operation. Read more
§

impl<'a> Sub<&'a IntervalMonthDayNano> for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
§

fn sub( self, rhs: &'a IntervalMonthDayNano, ) -> <IntervalMonthDayNano as Sub<&'a IntervalMonthDayNano>>::Output

Performs the - operation. Read more
§

impl<'a> Sub<IntervalMonthDayNano> for &'a IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
§

fn sub( self, rhs: IntervalMonthDayNano, ) -> <&'a IntervalMonthDayNano as Sub<IntervalMonthDayNano>>::Output

Performs the - operation. Read more
§

impl Sub for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
§

fn sub(self, rhs: IntervalMonthDayNano) -> <IntervalMonthDayNano as Sub>::Output

Performs the - operation. Read more
§

impl SubAssign for IntervalMonthDayNano

§

fn sub_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the -= operation. Read more
§

impl Copy for IntervalMonthDayNano

§

impl Eq for IntervalMonthDayNano

§

impl StructuralPartialEq for IntervalMonthDayNano

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> ToByteSlice for T
where T: ArrowNativeType,

§

fn to_byte_slice(&self) -> &[u8]

Converts this instance into a byte slice
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T, Rhs> NumAssignOps<Rhs> for T
where T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>,

Source§

impl<T, Rhs, Output> NumOps<Rhs, Output> for T
where T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,

Source§

impl<T, Base> RefNum<Base> for T
where T: NumOps<Base, Base> + for<'r> NumOps<&'r Base, Base>,

§

impl<T> Ungil for T
where T: Send,