pub struct ProductIdentity {Show 14 fields
pub family: ProductType,
pub analysis_center: AnalysisCenter,
pub publisher: ProductPublisher,
pub solution: SolutionClass,
pub campaign: ProductCampaign,
pub version: u8,
pub date: ProductDate,
pub issue: Option<String>,
pub span: String,
pub sample: String,
pub official_filename: String,
pub format: ProductFormat,
pub format_version: Option<String>,
pub prediction_horizon_days: Option<u8>,
}Expand description
Exact identity of one public GNSS product, independent of distributor.
The official filename is part of the identity. Transport compression and
URL belong to DistributionLocation because two distributors may package
the same decompressed product differently.
Fields§
§family: ProductTypeProduct family.
analysis_center: AnalysisCenterCatalog analysis-center product line.
publisher: ProductPublisherProducing or combining organization.
solution: SolutionClassSolution class or tier.
campaign: ProductCampaignCampaign or project.
version: u8Product-line version encoded by the long filename.
date: ProductDateNominal product start date.
issue: Option<String>Optional HHMM issue/start time.
span: StringIntended coverage period token, for example 01D.
sample: StringSampling interval token, for example 05M.
official_filename: StringOfficial filename without transport compression suffix.
format: ProductFormatPublic serialization format.
format_version: Option<String>Parsed serialization revision when the request constrains one.
Catalog identities leave this unset because the revision is carried by product content rather than the official filename. A resolved identity may set it after parsing the product.
prediction_horizon_days: Option<u8>Prediction horizon when the product line encodes one.
Implementations§
Source§impl ProductIdentity
impl ProductIdentity
Sourcepub fn validate(&self) -> Result<(), DataCatalogError>
pub fn validate(&self) -> Result<(), DataCatalogError>
Validate that every identity field agrees with the official filename.
This is required for caller-constructed values before using them in a request, URL, or cache path. Catalog-produced identities are validated before they are returned.
Sourcepub fn key(&self) -> Result<String, DataCatalogError>
pub fn key(&self) -> Result<String, DataCatalogError>
Deterministic identity key suitable for a portable cache layout.
Sourcepub fn canonical_bytes(&self) -> Result<Vec<u8>, DataCatalogError>
pub fn canonical_bytes(&self) -> Result<Vec<u8>, DataCatalogError>
Canonical, unambiguous bytes containing every exact identity field.
The encoding is ASCII/UTF-8 field text separated by NUL bytes. It is a stable cross-interface input to cache identity hashing, not a display or interchange document.
Sourcepub fn cache_relpath(
&self,
source: DistributionSource,
) -> Result<String, DataCatalogError>
pub fn cache_relpath( &self, source: DistributionSource, ) -> Result<String, DataCatalogError>
Deterministic cache path for this identity and distributor.
Trait Implementations§
Source§impl Clone for ProductIdentity
impl Clone for ProductIdentity
Source§fn clone(&self) -> ProductIdentity
fn clone(&self) -> ProductIdentity
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 ProductIdentity
impl Debug for ProductIdentity
impl Eq for ProductIdentity
Source§impl Hash for ProductIdentity
impl Hash for ProductIdentity
Source§impl PartialEq for ProductIdentity
impl PartialEq for ProductIdentity
impl StructuralPartialEq for ProductIdentity
Auto Trait Implementations§
impl Freeze for ProductIdentity
impl RefUnwindSafe for ProductIdentity
impl Send for ProductIdentity
impl Sync for ProductIdentity
impl Unpin for ProductIdentity
impl UnsafeUnpin for ProductIdentity
impl UnwindSafe for ProductIdentity
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.