google_taxonomy

Crates.iogoogle_taxonomy
lib.rsgoogle_taxonomy
version0.3.2
sourcesrc
created_at2021-08-13 12:38:41.297737
updated_at2021-08-27 11:42:57.762735
descriptionStruct with all Google Product Categories / Taxonomy
homepagehttps://github.com/jmagnusson/google-taxonomy
repositoryhttps://github.com/jmagnusson/google-taxonomy
max_upload_size
id435684
size511,883
Jacob Magnusson (jacobsvante)

documentation

https://docs.rs/google_taxonomy/

README

Google Taxonomy / Product Categories

The purpose of this crate is to more easily work with Google Product Categories / Taxonomy. This is provided via the google_taxonomy::ProductCategory struct which contains all categories that exist as of 2021-08-13.

Associated constants naming

The ProductCategory contains each product category as an associated constant. They are translated from the taxonomy-with-ids.en-US.txt file as follows:

  1. The leading ID is removed (and can be obtained using the id method).
  2. The immediately following characters - are removed
  3. All occurrences of & are replaced with And
  4. Finally, all non-alphanumeric ascii characters are removed

For example 1604 - Apparel & Accessories > Clothing becomes ProductCategory::ApparelAndAccessoriesClothing.

Each constant takes up 2 bytes of memory.

Examples

Try to parse an integer as a product category (i.e. from its ID)

use std::convert::TryInto;
use google_taxonomy::ProductCategory;

let cat: ProductCategory = 3237.try_into().unwrap();
assert_eq!(cat, ProductCategory::AnimalsAndPetSuppliesLiveAnimals);

Get the number representation of the product category

use google_taxonomy::ProductCategory;
assert_eq!(ProductCategory::AnimalsAndPetSuppliesLiveAnimals.id(), 3237);

Get the name of a product category

use google_taxonomy::ProductCategory;
assert_eq!(ProductCategory::AnimalsAndPetSuppliesLiveAnimals.to_string(), "Animals & Pet Supplies > Live Animals");

Serialize / deserialize with Serde

#[cfg(feature = "serde")]
{
    use serde::{Deserialize, Serialize};
    use google_taxonomy::ProductCategory;

    #[derive(Deserialize, Serialize, Debug, PartialEq)]
    struct Product {
        category: ProductCategory,
    }
    let serialized = r#"{"category":"Animals & Pet Supplies"}"#;

    // Deserialize, e.g. with serde_json
    let deserialized: Product = serde_json::from_str(&serialized).unwrap();

    assert_eq!(deserialized, Product { category: ProductCategory::AnimalsAndPetSupplies });

    // And back to its original serialized form again...
    assert_eq!(serde_json::to_string(&deserialized).unwrap(), serialized);
}
Commit count: 36

cargo fmt