pub struct PackageManifest {Show 14 fields
pub names: Vec<Option<String>>,
pub full_names: Vec<Option<String>>,
pub owners: Vec<Option<String>>,
pub package_urls: Vec<Option<String>>,
pub dates_created: Vec<OffsetDateTime>,
pub dates_updated: Vec<OffsetDateTime>,
pub uuid4s: Vec<Option<String>>,
pub rating_scores: Vec<Option<u32>>,
pub is_pinned: Vec<Option<bool>>,
pub is_deprecated: Vec<Option<bool>>,
pub has_nsfw_content: Vec<Option<bool>>,
pub categories: Vec<Vec<String>>,
pub version_ranges: Vec<(usize, usize)>,
pub versions: VersionManifest,
}Expand description
Struct-of-Arrays representation of the package manifest for efficient storage.
This structure organizes package data in a columnar format to minimize duplication and improve serialization efficiency. All packages are stored with parallel vectors, and version data is stored separately with indices linking back to packages.
Fields§
§names: Vec<Option<String>>§full_names: Vec<Option<String>>§owners: Vec<Option<String>>§package_urls: Vec<Option<String>>§dates_created: Vec<OffsetDateTime>§dates_updated: Vec<OffsetDateTime>§uuid4s: Vec<Option<String>>§rating_scores: Vec<Option<u32>>§is_pinned: Vec<Option<bool>>§is_deprecated: Vec<Option<bool>>§has_nsfw_content: Vec<Option<bool>>§categories: Vec<Vec<String>>§version_ranges: Vec<(usize, usize)>§versions: VersionManifestImplementations§
Source§impl PackageManifest
impl PackageManifest
Sourcepub fn validate(&self) -> Result<(), String>
pub fn validate(&self) -> Result<(), String>
Validates the internal consistency of the manifest structure.
Checks that all parallel vectors have matching lengths and that version ranges are valid.
§Returns
Ok if the manifest is valid, otherwise an error describing the problem.
Sourcepub fn get_package_by_full_name(&self, full_name: &str) -> Option<Package>
pub fn get_package_by_full_name(&self, full_name: &str) -> Option<Package>
Sourcepub fn find_index_by_full_name(&self, full_name: &str) -> Option<usize>
pub fn find_index_by_full_name(&self, full_name: &str) -> Option<usize>
Sourcepub fn get_package_at(&self, idx: usize) -> Package
pub fn get_package_at(&self, idx: usize) -> Package
Sourcepub fn get_latest_version_at(&self, idx: usize) -> Option<usize>
pub fn get_latest_version_at(&self, idx: usize) -> Option<usize>
Trait Implementations§
Source§impl Clone for PackageManifest
impl Clone for PackageManifest
Source§fn clone(&self) -> PackageManifest
fn clone(&self) -> PackageManifest
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PackageManifest
impl Debug for PackageManifest
Source§impl<'de> Deserialize<'de> for PackageManifest
impl<'de> Deserialize<'de> for PackageManifest
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
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<PackageManifest> for InternedPackageManifest
impl From<PackageManifest> for InternedPackageManifest
Source§fn from(manifest: PackageManifest) -> Self
fn from(manifest: PackageManifest) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for PackageManifest
impl RefUnwindSafe for PackageManifest
impl Send for PackageManifest
impl Sync for PackageManifest
impl Unpin for PackageManifest
impl UnsafeUnpin for PackageManifest
impl UnwindSafe for PackageManifest
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
Mutably borrows from an owned value. Read more