nfe_parser/base/
endereco.rs1use super::Error;
7use serde::{Deserialize, Serialize};
8use std::str::FromStr;
9
10#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
14#[serde(rename = "Endereco")]
15pub struct Endereco {
16 #[serde(rename = "xLgr")]
18 pub logradouro: String,
19 #[serde(rename = "nro")]
21 pub numero: String,
22 #[serde(rename = "xCpl")]
24 #[serde(skip_serializing_if = "Option::is_none")]
25 #[serde(default)]
26 pub complemento: Option<String>,
27 #[serde(rename = "xBairro")]
29 pub bairro: String,
30 #[serde(rename = "cMun")]
32 pub codigo_municipio: u32,
33 #[serde(rename = "xMun")]
35 pub nome_municipio: String,
36 #[serde(rename = "UF")]
38 pub sigla_uf: String,
39 #[serde(rename = "CEP")]
41 pub cep: String,
42 #[serde(rename = "cPais")]
44 #[serde(skip_serializing_if = "Option::is_none")]
45 #[serde(default)]
46 pub codigo_pais: Option<String>,
47 #[serde(rename = "xPais")]
49 #[serde(skip_serializing_if = "Option::is_none")]
50 #[serde(default)]
51 pub nome_pais: Option<String>,
52 #[serde(rename = "fone")]
54 #[serde(skip_serializing_if = "Option::is_none")]
55 #[serde(default)]
56 pub telefone: Option<String>,
57}
58
59impl FromStr for Endereco {
60 type Err = Error;
61
62 fn from_str(s: &str) -> Result<Self, Self::Err> {
63 quick_xml::de::from_str(s).map_err(|e| e.into())
64 }
65}
66
67impl ToString for Endereco {
68 fn to_string(&self) -> String {
69 quick_xml::se::to_string(self).expect("Falha ao serializar o endereço")
70 }
71}
72
73impl Default for Endereco {
74 fn default() -> Self {
75 Self {
76 logradouro: String::new(),
77 numero: String::new(),
78 complemento: None,
79 bairro: String::new(),
80 codigo_municipio: 0,
81 nome_municipio: String::new(),
82 sigla_uf: String::new(),
83 cep: String::new(),
84 codigo_pais: Some("1058".to_string()),
85 nome_pais: Some("BRASIL".to_string()),
86 telefone: None,
87 }
88 }
89}