use serde::{Deserialize, Serialize};
#[expect(missing_docs)]
#[non_exhaustive]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum StateCode {
#[serde(rename = "AB")]
AB,
#[serde(rename = "AC")]
AC,
#[serde(rename = "AH")]
AH,
#[serde(rename = "AK")]
AK,
#[serde(rename = "AL")]
AL,
#[serde(rename = "AM")]
AM,
#[serde(rename = "AR")]
AR,
#[serde(rename = "AS")]
AS,
#[serde(rename = "AT")]
AT,
#[serde(rename = "AZ")]
AZ,
#[serde(rename = "BC")]
BC,
#[serde(rename = "BJ")]
BJ,
#[serde(rename = "CA")]
CA,
#[serde(rename = "CB")]
CB,
#[serde(rename = "CO")]
CO,
#[serde(rename = "CQ")]
CQ,
#[serde(rename = "CT")]
CT,
#[serde(rename = "CZ")]
CZ,
#[serde(rename = "DC")]
DC,
#[serde(rename = "DE")]
DE,
#[serde(rename = "EH")]
EH,
#[serde(rename = "FH")]
FH,
#[serde(rename = "FI")]
FI,
#[serde(rename = "FJ")]
FJ,
#[serde(rename = "FL")]
FL,
#[serde(rename = "FO")]
FO,
#[serde(rename = "FS")]
FS,
#[serde(rename = "GA")]
GA,
#[serde(rename = "GD")]
GD,
#[serde(rename = "GF")]
GF,
#[serde(rename = "GM")]
GM,
#[serde(rename = "GS")]
GS,
#[serde(rename = "GU")]
GU,
#[serde(rename = "GX")]
GX,
#[serde(rename = "GZ")]
GZ,
#[serde(rename = "HA")]
HA,
#[serde(rename = "HB")]
HB,
#[serde(rename = "HE")]
HE,
#[serde(rename = "HG")]
HG,
#[serde(rename = "HI")]
HI,
#[serde(rename = "HL")]
HL,
#[serde(rename = "HN")]
HN,
#[serde(rename = "HO")]
HO,
#[serde(rename = "HS")]
HS,
#[serde(rename = "IA")]
IA,
#[serde(rename = "ID")]
ID,
#[serde(rename = "IG")]
IG,
#[serde(rename = "IK")]
IK,
#[serde(rename = "IL")]
IL,
#[serde(rename = "IN")]
IN,
#[serde(rename = "IT")]
IT,
#[serde(rename = "JL")]
JL,
#[serde(rename = "JS")]
JS,
#[serde(rename = "JX")]
JX,
#[serde(rename = "KA")]
KA,
#[serde(rename = "KC")]
KC,
#[serde(rename = "KN")]
KN,
#[serde(rename = "KO")]
KO,
#[serde(rename = "KS")]
KS,
#[serde(rename = "KT")]
KT,
#[serde(rename = "KU")]
KU,
#[serde(rename = "KY")]
KY,
#[serde(rename = "LA")]
LA,
#[serde(rename = "LN")]
LN,
#[serde(rename = "MA")]
MA,
#[serde(rename = "MB")]
MB,
#[serde(rename = "MD")]
MD,
#[serde(rename = "ME")]
ME,
#[serde(rename = "MG")]
MG,
#[serde(rename = "MI")]
MI,
#[serde(rename = "MN")]
MN,
#[serde(rename = "MO")]
MO,
#[serde(rename = "MS")]
MS,
#[serde(rename = "MT")]
MT,
#[serde(rename = "MZ")]
MZ,
#[serde(rename = "NB")]
NB,
#[serde(rename = "NC")]
NC,
#[serde(rename = "ND")]
ND,
#[serde(rename = "NE")]
NE,
#[serde(rename = "NG")]
NG,
#[serde(rename = "NH")]
NH,
#[serde(rename = "NJ")]
NJ,
#[serde(rename = "NL")]
NL,
#[serde(rename = "NM")]
NM,
#[serde(rename = "NN")]
NN,
#[serde(rename = "NR")]
NR,
#[serde(rename = "NS")]
NS,
#[serde(rename = "NT")]
NT,
#[serde(rename = "NU")]
NU,
#[serde(rename = "NV")]
NV,
#[serde(rename = "NW")]
NW,
#[serde(rename = "NX")]
NX,
#[serde(rename = "NY")]
NY,
#[serde(rename = "OH")]
OH,
#[serde(rename = "OK")]
OK,
#[serde(rename = "ON")]
ON,
#[serde(rename = "OR")]
OR,
#[serde(rename = "OS")]
OS,
#[serde(rename = "OT")]
OT,
#[serde(rename = "OY")]
OY,
#[serde(rename = "PA")]
PA,
#[serde(rename = "PE")]
PE,
#[serde(rename = "PR")]
PR,
#[serde(rename = "QC")]
QC,
#[serde(rename = "QH")]
QH,
#[serde(rename = "QL")]
QL,
#[serde(rename = "RI")]
RI,
#[serde(rename = "SA")]
SA,
#[serde(rename = "SC")]
SC,
#[serde(rename = "SD")]
SD,
#[serde(rename = "SH")]
SH,
#[serde(rename = "SI")]
SI,
#[serde(rename = "SK")]
SK,
#[serde(rename = "SN")]
SN,
#[serde(rename = "ST")]
ST,
#[serde(rename = "SX")]
SX,
#[serde(rename = "SZ")]
SZ,
#[serde(rename = "TA")]
TA,
#[serde(rename = "TG")]
TG,
#[serde(rename = "TJ")]
TJ,
#[serde(rename = "TK")]
TK,
#[serde(rename = "TN")]
TN,
#[serde(rename = "TS")]
TS,
#[serde(rename = "TT")]
TT,
#[serde(rename = "TX")]
TX,
#[serde(rename = "TY")]
TY,
#[serde(rename = "UT")]
UT,
#[serde(rename = "VA")]
VA,
#[serde(rename = "VI")]
VI,
#[serde(rename = "VT")]
VT,
#[serde(rename = "WA")]
WA,
#[serde(rename = "WI")]
WI,
#[serde(rename = "WK")]
WK,
#[serde(rename = "WV")]
WV,
#[serde(rename = "WY")]
WY,
#[serde(rename = "XJ")]
XJ,
#[serde(rename = "XZ")]
XZ,
#[serde(rename = "YA")]
YA,
#[serde(rename = "YN")]
YN,
#[serde(rename = "YT")]
YT,
#[serde(rename = "YU")]
YU,
#[serde(rename = "ZJ")]
ZJ,
}
#[cfg(test)]
mod tests {
use super::*;
use serde_json;
#[test]
fn test_serialize_ca() {
let val = StateCode::CA;
let serialized = serde_json::to_string(&val).unwrap();
assert_eq!(serialized, "\"CA\"");
}
#[test]
fn test_deserialize_ca() {
let json = "\"CA\"";
let deserialized: StateCode = serde_json::from_str(json).unwrap();
assert_eq!(deserialized, StateCode::CA);
}
#[test]
fn test_serialize_ya() {
let val = StateCode::YA;
let serialized = serde_json::to_string(&val).unwrap();
assert_eq!(serialized, "\"YA\"");
}
#[test]
fn test_deserialize_ya() {
let json = "\"YA\"";
let deserialized: StateCode = serde_json::from_str(json).unwrap();
assert_eq!(deserialized, StateCode::YA);
}
}