Skip to main content

TimeScaleConversion

Struct TimeScaleConversion 

Source
pub struct TimeScaleConversion {
    pub source: TimeScale,
    pub target: TimeScale,
    pub offset_seconds: f64,
}
Expand description

A caller-supplied time-scale conversion policy.

The conversion stores the source and target time scales plus the explicit target - source offset in SI seconds. It does not model Delta T, leap seconds, DUT1, or relativistic TDB terms itself; it only packages the caller’s chosen rule so an instant can be retagged explicitly and reproducibly. Its compact summary renders the structured field names explicitly so release-facing diagnostics do not have to infer which side of the conversion the offset applies to.

§Example

use pleiades_types::{Instant, JulianDay, TimeScale, TimeScaleConversion};

let policy = TimeScaleConversion::new(TimeScale::Ut1, TimeScale::Tt, 64.184);
let instant = Instant::new(JulianDay::from_days(2_451_545.0), TimeScale::Ut1);
let converted = policy.apply(instant).expect("UT1-tagged instant");

assert_eq!(policy.summary_line(), "source=UT1; target=TT; offset_seconds=64.184 s");
assert_eq!(converted.scale, TimeScale::Tt);
use pleiades_types::{Instant, JulianDay, TimeScale, TimeScaleConversion};

let policy = TimeScaleConversion::new(TimeScale::Tdb, TimeScale::Tt, -0.001_657);
let instant = Instant::new(JulianDay::from_days(2_451_545.0), TimeScale::Tdb);

assert!(policy.validate(instant).is_ok());
assert_eq!(policy.summary_line(), "source=TDB; target=TT; offset_seconds=-0.001657 s");
assert_eq!(policy.validated_summary_line(instant).unwrap(), policy.summary_line());

Fields§

§source: TimeScale

The source time scale expected by the policy.

§target: TimeScale

The target time scale produced by the policy.

§offset_seconds: f64

The explicit target - source offset in SI seconds.

Implementations§

Source§

impl TimeScaleConversion

Source

pub const fn new( source: TimeScale, target: TimeScale, offset_seconds: f64, ) -> TimeScaleConversion

Creates a new caller-supplied time-scale conversion policy.

Source

pub fn summary_line(&self) -> String

Returns a compact one-line rendering of the caller-supplied policy.

Source

pub fn validated_summary_line( &self, instant: Instant, ) -> Result<String, TimeScaleConversionError>

Returns the compact summary line after validating the policy.

This keeps the fail-closed rendering path co-located with the explicit conversion contract when a caller wants to report the policy before mutating the instant.

Source

pub fn validate(self, instant: Instant) -> Result<(), TimeScaleConversionError>

Validates the policy against a specific instant without retagging it.

This is useful when a caller wants to preflight the explicit conversion contract before mutating the instant itself. The source scale must match the instant’s current scale, and the offset must be finite.

Source

pub fn apply( self, instant: Instant, ) -> Result<Instant, TimeScaleConversionError>

Applies the policy to an instant.

This is the mutating counterpart to TimeScaleConversion::validate. The source scale must match the instant’s current scale, and the offset must be finite. Otherwise the conversion fails with the same structured time-scale error used by the lower-level helpers.

Trait Implementations§

Source§

impl Clone for TimeScaleConversion

Source§

fn clone(&self) -> TimeScaleConversion

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for TimeScaleConversion

Source§

impl Debug for TimeScaleConversion

Source§

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

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

impl<'de> Deserialize<'de> for TimeScaleConversion

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<TimeScaleConversion, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

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

impl Display for TimeScaleConversion

Source§

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

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

impl PartialEq for TimeScaleConversion

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for TimeScaleConversion

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

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

impl StructuralPartialEq for TimeScaleConversion

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

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

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

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.