Struct arrow_array::types::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:

  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§

source§

impl IntervalMonthDayNano

source

pub const ZERO: IntervalMonthDayNano = _

The additive identity i.e. 0.

source

pub const ONE: IntervalMonthDayNano = _

The multiplicative identity, i.e. 1.

source

pub const MINUS_ONE: IntervalMonthDayNano = _

The multiplicative inverse, i.e. -1.

source

pub const MAX: IntervalMonthDayNano = _

The maximum value that can be represented

source

pub const MIN: IntervalMonthDayNano = _

The minimum value that can be represented

source

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

Create a new IntervalMonthDayNano

source

pub fn wrapping_abs(self) -> IntervalMonthDayNano

Computes the absolute value

source

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

Computes the absolute value

source

pub fn wrapping_neg(self) -> IntervalMonthDayNano

Negates the value

source

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

Negates the value

source

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

Performs wrapping addition

source

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

Performs checked addition

source

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

Performs wrapping subtraction

source

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

Performs checked subtraction

source

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

Performs wrapping multiplication

source

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

Performs checked multiplication

source

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

Performs wrapping division

source

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

Performs checked division

source

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

Performs wrapping remainder

source

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

Performs checked remainder

source

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

Performs wrapping exponentiation

source

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

Performs checked exponentiation

Trait Implementations§

source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the + operator.
source§

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

Performs the + operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the + operator.
source§

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

Performs the + operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the + operator.
source§

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

Performs the + operation. Read more
source§

impl Add for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the + operator.
source§

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

Performs the + operation. Read more
source§

impl AddAssign for IntervalMonthDayNano

source§

fn add_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the += operation. Read more
source§

impl ArrowNativeType for IntervalMonthDayNano

source§

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

Convert native integer type from usize Read more
source§

fn as_usize(self) -> usize

Convert to usize according to the as operator
source§

fn usize_as(i: usize) -> IntervalMonthDayNano

Convert from usize according to the as operator
source§

fn to_usize(self) -> Option<usize>

Convert native type to usize. Read more
source§

fn to_isize(self) -> Option<isize>

Convert native type to isize. Read more
source§

fn to_i64(self) -> Option<i64>

Convert native type to i64. Read more
source§

fn get_byte_width() -> usize

Returns the byte width of this native type.
source§

fn from_i32(_: i32) -> Option<Self>

👎Deprecated: please use Option::Some instead
Convert native type from i32. Read more
source§

fn from_i64(_: i64) -> Option<Self>

👎Deprecated: please use Option::Some instead
Convert native type from i64. Read more
source§

fn from_i128(_: i128) -> Option<Self>

👎Deprecated: please use Option::Some instead
Convert native type from i128. Read more
source§

impl ArrowNativeTypeOp for IntervalMonthDayNano

source§

const ZERO: Self = IntervalMonthDayNano::ZERO

The additive identity
source§

const ONE: Self = IntervalMonthDayNano::ONE

The multiplicative identity
source§

const MIN_TOTAL_ORDER: Self = 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.
source§

const MAX_TOTAL_ORDER: Self = 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.
source§

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

Checked addition operation
source§

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

Wrapping addition operation
source§

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

Checked subtraction operation
source§

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

Wrapping subtraction operation
source§

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

Checked multiplication operation
source§

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

Wrapping multiplication operation
source§

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

Checked division operation
source§

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

Wrapping division operation
source§

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

Checked remainder operation
source§

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

Wrapping remainder operation
source§

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

Checked negation operation
source§

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

Checked exponentiation operation
source§

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

Wrapping exponentiation operation
source§

fn neg_wrapping(self) -> Self

Wrapping negation operation
source§

fn is_zero(self) -> bool

Returns true if zero else false
source§

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

Compare operation
source§

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

Equality operation
source§

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

Not equal operation
source§

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

Less than operation
source§

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

Less than equals operation
source§

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

Greater than operation
source§

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

Greater than equals operation
source§

impl Clone for IntervalMonthDayNano

source§

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
source§

impl Debug for IntervalMonthDayNano

source§

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

Formats the value using the given formatter. Read more
source§

impl Default for IntervalMonthDayNano

source§

fn default() -> IntervalMonthDayNano

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

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl Div for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the / operator.
source§

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

Performs the / operation. Read more
source§

impl DivAssign for IntervalMonthDayNano

source§

fn div_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the /= operation. Read more
source§

impl Hash for IntervalMonthDayNano

source§

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
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl Mul for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the * operator.
source§

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

Performs the * operation. Read more
source§

impl MulAssign for IntervalMonthDayNano

source§

fn mul_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the *= operation. Read more
source§

impl Neg for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
source§

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

Performs the unary - operation. Read more
source§

impl Ord for IntervalMonthDayNano

source§

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 + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for IntervalMonthDayNano

source§

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.
source§

impl PartialOrd for IntervalMonthDayNano

source§

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
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the % operator.
source§

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

Performs the % operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the % operator.
source§

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

Performs the % operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the % operator.
source§

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

Performs the % operation. Read more
source§

impl Rem for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the % operator.
source§

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

Performs the % operation. Read more
source§

impl RemAssign for IntervalMonthDayNano

source§

fn rem_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the %= operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
source§

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

Performs the - operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
source§

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

Performs the - operation. Read more
source§

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

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
source§

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

Performs the - operation. Read more
source§

impl Sub for IntervalMonthDayNano

§

type Output = IntervalMonthDayNano

The resulting type after applying the - operator.
source§

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

Performs the - operation. Read more
source§

impl SubAssign for IntervalMonthDayNano

source§

fn sub_assign(&mut self, rhs: IntervalMonthDayNano)

Performs the -= operation. Read more
source§

impl Copy for IntervalMonthDayNano

source§

impl Eq for IntervalMonthDayNano

source§

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§

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

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

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

source§

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

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

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

source§

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

Checks if this value is equivalent to the given key. Read more
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.

source§

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

source§

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

Converts this instance into a byte slice
source§

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

§

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>,

§

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>,

§

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.
source§

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>,