#country-code #enums #codes #sqlx #compatible #serde #copyable

country-code-enum

Copyable Serde and Sqlx compatible country codes

2 unstable releases

0.2.0 Oct 6, 2024
0.1.0 Oct 5, 2024

#818 in Encoding

Download history 10/week @ 2024-10-24 23/week @ 2024-10-31 23/week @ 2024-11-07 4/week @ 2024-11-14 5/week @ 2024-11-21 87/week @ 2024-11-28 134/week @ 2024-12-05 271/week @ 2024-12-12 102/week @ 2024-12-19 30/week @ 2024-12-26 37/week @ 2025-01-02 3/week @ 2025-01-09 32/week @ 2025-01-16 95/week @ 2025-01-23 39/week @ 2025-01-30 120/week @ 2025-02-06

287 downloads per month
Used in 2 crates (via anypki)

MIT license

18KB
480 lines

country-code-enum

License Crates.io Docs.rs

Copyable Serde and Sqlx compatible country codes

use country_code_enum::CountryCode;

let argentina: CountryCode = "AR".parse().unwrap();
assert_eq!(argentina, CountryCode::AR);
assert_eq!(argentina.as_ref(), "AR");
assert_eq!(argentina.name(), "Argentina");

Serde

use country_code_enum::CountryCode;

#[cfg(feature = "serde")]
{
    let argentina: CountryCode = serde_json::from_str("\"AR\"").unwrap();
    assert_eq!(argentina, CountryCode::AR);
    assert_eq!(serde_json::to_string(&argentina).unwrap(), "\"AR\"");
}

Sqlx

use country_code_enum::CountryCode;

async fn sqlx_example(pool: sqlx::PgPool) {
    let argentina = sqlx::query_scalar!(r#"SELECT 'AR'::varchar as "val: CountryCode""#)
        .fetch_one(&pool)
        .await
        .unwrap()
        .unwrap();
    assert_eq!(argentina, CountryCode::AR);

    let s = sqlx::query_scalar!("SELECT $1::varchar", argentina as _)
        .fetch_one(&pool)
        .await
        .unwrap()
        .unwrap();
    assert_eq!(s, "AR");
}

Contributing

  • please run .pre-commit.sh before sending a PR, it will check everything

License

This project is licensed under the MIT license.

Dependencies

~0–10MB
~120K SLoC