Struct Point

Source
pub struct Point {
    pub timestamp: i64,
}
Expand description

Point in Time

This is simply a timestamp according to UNIX convention, that is, the number of seconds since 1970-01-01 00:00:00. Negative values represent time before that epoch, obviously.

Because it is an i64, the date range that can be represented is very large, roughly from the year -292_277_022_657 to +292_277_026_596. However, working with Points close to end of this range is a bad idea, as date math operations might overflow.

Note that the calendar time counterpart to this, DateTime, can represent an even larger range, since it has an entire i64 for just the year.

Fields§

§timestamp: i64

Count of seconds since 1970-01-01 00:00:00

Implementations§

Source§

impl Point

Source

pub const MIN: Self

The earliest Point that can be represented by the timestamp

-292277022657-01-27 08:29:52 (a Monday)

Source

pub const MAX: Self

The last Point that can be represented by the timestamp

292277026596-12-04 15:30:07 (a Sunday)

Source

pub const fn from_epoch(timestamp: i64) -> Self

Same as constructing Point {timestamp} directly

Source

pub fn now() -> Self

Get the current Point in time from the system clock

Source

pub const fn checked_add(self, span: Span) -> Option<Self>

Checked Span addition

Computes self + span, returning None if overflow occurred.

use greg::{Point, Span};

assert_eq!(
    Point::now().checked_add(Span::parse("300000000000y")),
    None
);
assert_eq!(
    Point::MIN.checked_add(Span::MAX),
    Some(Point::MAX)
);
Source

pub const fn checked_sub(self, span: Span) -> Option<Self>

Checked Span subtraction

Computes self - span, returning None if overflow occurred.

use greg::{Point, Span};

assert_eq!(
    Point::now().checked_sub(Span::parse("300000000000y")),
    None
);

assert_eq!(
    Point::MAX.checked_sub(Span::MAX),
    Some(Point::MIN)
);
Source

pub const fn saturating_add(self, span: Span) -> Self

Saturating Span addition

Computes self + span, saturating at the numeric bounds instead of overflowing.

use greg::{Point, Span};

assert_eq!(
    Point::now().saturating_add(Span::parse("300000000000y")),
    Point::MAX
);
assert_eq!(
    Point::MIN.saturating_add(Span::MAX - Span::SECOND),
    Point::MAX - Span::SECOND
);
Source

pub const fn saturating_sub(self, span: Span) -> Self

Saturating Span subtraction

Computes self - span, saturating at the numeric bounds instead of overflowing.

use greg::{Point, Span};

assert_eq!(
    Point::now().saturating_sub(Span::parse("300000000000y")),
    Point::MIN
);

assert_eq!(
    Point::MAX.saturating_sub(Span::MAX - Span::SECOND),
    Point::MIN + Span::SECOND
);

Trait Implementations§

Source§

impl Add<Span> for Point

Source§

type Output = Point

The resulting type after applying the + operator.
Source§

fn add(self, rhs: Span) -> Self::Output

Performs the + operation. Read more
Source§

impl Clone for Point

Source§

fn clone(&self) -> Point

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

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Point

Source§

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

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

impl<'de> Deserialize<'de> for Point

Available on crate feature serde only.
Source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<SystemTime> for Point

Source§

fn from(sys: SystemTime) -> Self

Converts to this type from the input type.
Source§

impl FromSql for Point

Available on crate feature rusqlite only.
Source§

fn column_result(value: ValueRef<'_>) -> FromSqlResult<Self>

Converts SQLite value into Rust value.
Source§

impl Hash for Point

Source§

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

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 Ord for Point

Source§

fn cmp(&self, other: &Point) -> 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
Source§

impl PartialEq for Point

Source§

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

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

const 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 Point

Source§

fn partial_cmp(&self, other: &Point) -> 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 RangeBounds<Point> for Frame

Source§

fn start_bound(&self) -> Bound<&Point>

Start index bound. Read more
Source§

fn end_bound(&self) -> Bound<&Point>

End index bound. Read more
Source§

fn contains<U>(&self, item: &U) -> bool

Returns true if item is contained in the range. Read more
Source§

fn is_empty(&self) -> bool
where T: PartialOrd,

🔬This is a nightly-only experimental API. (range_bounds_is_empty)
Returns true if the range contains no items. One-sided ranges (RangeFrom, etc) always return false. Read more
Source§

impl Serialize for Point

Available on crate feature serde only.
Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Sub<Span> for Point

Source§

type Output = Point

The resulting type after applying the - operator.
Source§

fn sub(self, rhs: Span) -> Self::Output

Performs the - operation. Read more
Source§

impl Sub for Point

Source§

fn sub(self, rhs: Point) -> Self::Output

Note that Spans cannot be negative, so this is the absolute difference between the Points

Source§

type Output = Span

The resulting type after applying the - operator.
Source§

impl ToSql for Point

Available on crate feature rusqlite only.
Source§

fn to_sql(&self) -> SqlResult<ToSqlOutput<'_>>

Converts Rust value to SQLite value
Source§

impl Copy for Point

Source§

impl Eq for Point

Source§

impl StructuralPartialEq for Point

Auto Trait Implementations§

§

impl Freeze for Point

§

impl RefUnwindSafe for Point

§

impl Send for Point

§

impl Sync for Point

§

impl Unpin for Point

§

impl UnwindSafe for Point

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> 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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,