pub struct Catalog { /* private fields */ }Expand description
Read-only catalog of every make and model present in the lookup data.
Useful for populating dropdowns, validators, or schema-typed enum columns
in webapps. Combines the vPIC pattern-derived index (make_models) with the
EU/global rip catalog (eu_brand_models, eu_engines) for non-US coverage.
Implementations§
Source§impl Catalog
impl Catalog
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Open the catalog using the default data directory (see crate::Decoder::new).
Sourcepub fn open(dir: &Path) -> Result<Self>
pub fn open(dir: &Path) -> Result<Self>
Open the catalog against an explicit data directory. EU rip tables are
optional — they’re only loaded if the corresponding .fst files exist.
Sourcepub fn resolve_make(&self, raw: &str) -> Option<String>
pub fn resolve_make(&self, raw: &str) -> Option<String>
Resolve a raw make string — dealer / listing form, often uppercased and
sometimes with the model glued on — to a canonical make present in the
catalog, or None if it doesn’t resolve.
Tries, in order: exact membership, a curated alias table (e.g. "LINK"/
"LYNK" → "LYNK & CO", "LEOPARD"/"BAO" → "FANGCHENGBAO", "KG"
→ "KGM"), then dropping trailing whitespace-separated tokens so a glued
model falls off ("LEOPARD 5" → "FANGCHENGBAO", "LINKTOUR ALUMI" →
"LINKTOUR"). This is what a downstream scraper should call to canonicalise
a listing’s make before accepting it.
Sourcepub fn make_count(&self) -> u64
pub fn make_count(&self) -> u64
Total number of distinct makes.
Sourcepub fn models_for_make(&self, make: &str) -> Vec<String>
pub fn models_for_make(&self, make: &str) -> Vec<String>
Sorted list of model names known for the given make (case-insensitive lookup).
Merges results from the vPIC pattern-derived index and the EU/global rip catalog, deduped and sorted.
Sourcepub fn make_for_model(&self, model: &str) -> Vec<String>
pub fn make_for_model(&self, model: &str) -> Vec<String>
Reverse lookup: every make (uppercase) that lists model, matched
case-insensitively. Merges the vPIC and EU/global indices.
The inverse index is built once on first call and cached for the Catalog’s lifetime, so consumers don’t rebuild a model → make map per boot. Returns an empty vec for an unknown model.
Sourcepub fn eu_models_for(&self, brand: &str) -> Vec<EuModelRow>
pub fn eu_models_for(&self, brand: &str) -> Vec<EuModelRow>
EU/global rip listing of models for the given brand, with year ranges. Returns an empty vec when the brand is unknown or the EU catalog is not embedded.
Sourcepub fn engines_for_brand(&self, brand: &str) -> Vec<EngineRow>
pub fn engines_for_brand(&self, brand: &str) -> Vec<EngineRow>
Engine variants known for the given brand. Filter by model in user
code, or use Catalog::engines_for.
Sourcepub fn engines_for(&self, brand: &str, model: &str) -> Vec<EngineRow>
pub fn engines_for(&self, brand: &str, model: &str) -> Vec<EngineRow>
Engine variants known for (brand, model). Both args are matched
case-insensitively against the canonical uppercase keys.
Sourcepub fn body_for(&self, make: &str, model: &str) -> Vec<BodyType>
pub fn body_for(&self, make: &str, model: &str) -> Vec<BodyType>
EU type-approval bodywork types known for (make, model).
make is normalised the same way as Catalog::eu_models_for /
Catalog::models_for_make; model is matched case-insensitively
against the canonical uppercase model key. Returns an empty vec when the
pair is unknown or the optional eu_body map is not embedded.
Sourcepub fn body_types() -> &'static [BodyType]
pub fn body_types() -> &'static [BodyType]
Static list of every standard BodyType variant (EU type-approval
bodywork codes), useful for typed dropdowns. Excludes
BodyType::Unknown, which is the absence of a code, not a type.
Sourcepub fn fuel_types() -> &'static [FuelType]
pub fn fuel_types() -> &'static [FuelType]
Static list of every FuelType variant — useful for typed dropdowns.
Sourcepub fn drive_types() -> &'static [DriveType]
pub fn drive_types() -> &'static [DriveType]
Static list of every DriveType variant — useful for typed dropdowns.
Sourcepub fn transmissions() -> &'static [Transmission]
pub fn transmissions() -> &'static [Transmission]
Static list of every Transmission variant — useful for typed dropdowns.
Auto Trait Implementations§
impl !Freeze for Catalog
impl RefUnwindSafe for Catalog
impl Send for Catalog
impl Sync for Catalog
impl Unpin for Catalog
impl UnsafeUnpin for Catalog
impl UnwindSafe for Catalog
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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> 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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.