#[non_exhaustive]pub enum ExactSp3ValidationError {
Show 37 variants
Parse(Error),
Catalog(DataCatalogError),
WrongProductFamily {
actual: ProductType,
},
InvalidIssue {
issue: String,
},
UnsupportedSpanToken {
token: String,
},
UnsupportedSampleToken {
token: String,
},
NonCanonicalSpanToken {
token: String,
canonical: String,
},
NonCanonicalSampleToken {
token: String,
canonical: String,
},
InvalidExpectedAgency {
agency: String,
},
AgencyMismatch {
expected: String,
actual: String,
},
MissingEof,
MalformedEofRecord {
line_number: usize,
record_length: usize,
},
TrailingContentAfterEof,
MandatoryHeaderRecordCount {
record: &'static str,
expected: usize,
actual: usize,
},
MissingDeclaredSatelliteCount,
DeclaredSatelliteCountMismatch {
declared: usize,
tokens: usize,
},
DuplicateDeclaredSatellite {
token: String,
first_index: usize,
duplicate_index: usize,
},
NoDeclaredSatellites,
SatelliteRecordSequenceMismatch {
record: &'static str,
epoch_index: usize,
expected: Vec<String>,
actual: Vec<String>,
},
BodyRecordInterleavingMismatch {
epoch_index: usize,
expected: Vec<String>,
actual: Vec<String>,
},
NonFiniteHeaderCadence,
NonPositiveHeaderCadence {
actual_s: f64,
},
UnsupportedHeaderCadence {
actual_s: f64,
},
CadenceMismatch {
requested_s: f64,
header_s: f64,
},
DeclaredEpochCountMismatch {
declared: u64,
parsed: usize,
},
MissingDeclaredStart,
DeclaredStartMismatch {
requested_j2000_s: f64,
declared_j2000_s: f64,
},
RequestBeforeGpsEpoch,
NonFiniteHeaderStartMetadata {
field: &'static str,
},
InvalidHeaderStartMetadata {
field: &'static str,
actual: f64,
},
HeaderStartMetadataMismatch {
field: &'static str,
requested: f64,
actual: f64,
},
EmptyEpochGrid,
FirstEpochMismatch {
requested_j2000_s: f64,
actual_j2000_s: f64,
},
IrregularEpochGrid {
epoch_index: usize,
requested_s: f64,
actual_s: f64,
},
SpanNotMultipleOfCadence {
span_s: u64,
cadence_s: u64,
},
SpanMismatch {
parsed: usize,
half_open: usize,
inclusive: usize,
},
FormatVersionMismatch {
requested: String,
actual: String,
},
}Expand description
Integrity failure while parsing or validating an exact SP3 product.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Parse(Error)
The bytes are not a parseable SP3 product.
Catalog(DataCatalogError)
The full catalog identity is invalid.
WrongProductFamily
A non-SP3 identity was supplied to the SP3 validator.
Fields
actual: ProductTypeSupplied family.
InvalidIssue
The optional start/issue token is not a valid HHMM value.
Fields
UnsupportedSpanToken
The requested span token is not a supported fixed-duration token.
UnsupportedSampleToken
The requested sample token is not a supported positive SP3 interval.
NonCanonicalSpanToken
A valid fixed-duration span token did not use the longest exact unit.
NonCanonicalSampleToken
A valid fixed-duration sample token did not use the longest exact unit.
InvalidExpectedAgency
An expected agency constraint is not a valid SP3 A4 producer code.
AgencyMismatch
Parsed SP3 producing agency differs from the exact request.
MissingEof
The product omitted its terminal EOF record.
MalformedEofRecord
The product contained an EOF-like record that violated the accepted logical-record grammar.
Fields
TrailingContentAfterEof
Nonblank records appeared after the terminal EOF marker.
MandatoryHeaderRecordCount
A mandatory SP3 header record count is incomplete or inconsistent.
Fields
MissingDeclaredSatelliteCount
The first + record does not carry a parseable declared satellite count.
DeclaredSatelliteCountMismatch
The line-3 count differs from the number of non-padding raw declaration
tokens across all + records.
DuplicateDeclaredSatellite
A satellite token appears more than once in the header declaration.
Fields
NoDeclaredSatellites
The header declares no satellites.
SatelliteRecordSequenceMismatch
One epoch’s raw P or V records do not exactly match the declared satellite count and order.
Fields
BodyRecordInterleavingMismatch
P/V records have the right per-type tokens but not the required body
order (for a velocity product, P(sat), V(sat) pairs).
Fields
NonFiniteHeaderCadence
The SP3 header declares a non-finite epoch interval.
NonPositiveHeaderCadence
The SP3 header declares a zero or negative epoch interval.
UnsupportedHeaderCadence
The SP3 header interval is outside the range allowed by the format.
CadenceMismatch
Header cadence does not equal the exact requested sample interval.
Fields
DeclaredEpochCountMismatch
Header line 1’s declared number of epochs differs from the parsed grid.
MissingDeclaredStart
Header line 1 does not contain an interpretable start epoch.
DeclaredStartMismatch
Header line 1’s start does not equal the exact requested start.
Fields
RequestBeforeGpsEpoch
The requested start predates the GPS week-numbering epoch that SP3 line 2 uses.
NonFiniteHeaderStartMetadata
A floating-point SP3 line-2 start field is not finite.
InvalidHeaderStartMetadata
An SP3 line-2 start field is outside its specified range.
HeaderStartMetadataMismatch
SP3 line-2 week/SOW or MJD metadata does not represent the trusted requested start.
Fields
EmptyEpochGrid
The product contains no parsed epoch records.
FirstEpochMismatch
The first parsed epoch does not equal the exact requested start.
Fields
IrregularEpochGrid
Parsed epochs are not a strictly increasing regular requested-cadence grid.
Fields
SpanNotMultipleOfCadence
The declared span is not an integer multiple of the requested cadence.
SpanMismatch
A regular grid does not represent either the half-open or inclusive form of the exact requested span.
Fields
FormatVersionMismatch
A resolved identity constrained an SP3 content revision that does not match the parsed header.
Trait Implementations§
Source§impl Clone for ExactSp3ValidationError
impl Clone for ExactSp3ValidationError
Source§fn clone(&self) -> ExactSp3ValidationError
fn clone(&self) -> ExactSp3ValidationError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ExactSp3ValidationError
impl Debug for ExactSp3ValidationError
Source§impl Display for ExactSp3ValidationError
impl Display for ExactSp3ValidationError
Source§impl Error for ExactSp3ValidationError
impl Error for ExactSp3ValidationError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl PartialEq for ExactSp3ValidationError
impl PartialEq for ExactSp3ValidationError
impl StructuralPartialEq for ExactSp3ValidationError
Auto Trait Implementations§
impl Freeze for ExactSp3ValidationError
impl RefUnwindSafe for ExactSp3ValidationError
impl Send for ExactSp3ValidationError
impl Sync for ExactSp3ValidationError
impl Unpin for ExactSp3ValidationError
impl UnsafeUnpin for ExactSp3ValidationError
impl UnwindSafe for ExactSp3ValidationError
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§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.