Module rust_persian_tools::national_id
source · Expand description
Iranian National Number utils (national-id
Cargo feature).
§Example
use rust_persian_tools::national_id::{NationalIdError, verify_iranian_national_id};
assert!(verify_iranian_national_id("11537027").is_ok());
assert!(verify_iranian_national_id("0076229645").is_ok());
assert!(verify_iranian_national_id("1583250689").is_ok());
assert_eq!(
verify_iranian_national_id("12345"),
Err(NationalIdError::Length(5)),
);
assert_eq!(
verify_iranian_national_id("9999999999"),
Err(NationalIdError::Invalid)
);
§serde Integration
§National Number
use rust_persian_tools::national_id::serde::national_id_de;
#[derive(Debug, PartialEq, serde::Deserialize)]
struct MyStruct {
#[serde(deserialize_with = "national_id_de")]
id: String,
}
let json_str = "{\"id\": \"0076229645\"}";
let my_struct: MyStruct = serde_json::from_str(json_str).unwrap();
assert_eq!(my_struct, MyStruct{id: "0076229645".to_string()});
let json_str_invalid = "{\"id\": \"ZeroOneTwo\"}";
assert!(serde_json::from_str::<MyStruct>(json_str_invalid).is_err());
assert_eq!(
serde_json::from_str::<MyStruct>(json_str_invalid).err().unwrap().to_string(),
"Could not convert National Number to numeric at line 1 column 19".to_string(),
);
§Option<National Number>
use rust_persian_tools::national_id::serde::national_id_option_de;
#[derive(Debug, PartialEq, serde::Deserialize)]
struct MyStruct {
#[serde(default, deserialize_with = "national_id_option_de")]
id: Option<String>,
}
let json_str = "{}";
let my_struct: MyStruct = serde_json::from_str(json_str).unwrap();
assert_eq!(my_struct, MyStruct{id: None});
let json_str = "{\"id\": \"0076229645\"}";
let my_struct: MyStruct = serde_json::from_str(json_str).unwrap();
assert_eq!(my_struct, MyStruct{id: Some("0076229645".to_string())});
Modules§
- serde helpers to deserialize Iranian National Number. Enabled if
serde
Cargo feature is enabled.
Enums§
- Possible errors during validation of Iranian National Number.
Functions§
- Validation of Iranian National Number (code-e Melli).