validador_br/
parser.rs

1use crate::validador::{Validador};
2use crate::types::{CartaoCredito, Cnh, Cnpj, Cpf, Cns, Pis, Renavam, Rg, 
3    TituloEleitor, CodigoBarrasGs1,
4};
5
6impl<'data> TryFrom<&'data str> for CartaoCredito<'data>{
7type Error = &'static str;
8
9    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
10        if Self::is_valid(value) {
11            Ok(Self(value))        
12        } else {
13            Err("Cartão de crédito inválido")
14        }
15    }
16}
17
18impl<'data> TryFrom<&'data str> for Cpf<'data>{
19type Error = &'static str;
20
21    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
22        if Self::is_valid(value) {
23            Ok(Self(value))        
24        } else {
25            Err("Cpf inválido")
26        }
27    }
28}
29
30// impl<'data> TryFrom<&'data String> for Cpf<'data>{
31// type Error = &'static str;
32
33// fn try_from(value: &'data String) -> Result<Self, Self::Error> {
34//     if Cpf::is_valid(&value) {
35//         Ok(Self(value))        
36//     } else {
37//         Err("Cpf inválido")
38//     }
39// }
40// }
41
42impl<'data> TryFrom<&'data str> for Cnh<'data>{
43type Error = &'static str;
44
45    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
46        if Self::is_valid(value) {
47            Ok(Self(value))        
48        } else {
49            Err("Carteira de motorista inválida")
50        }
51    }
52}
53
54impl<'data> TryFrom<&'data str> for Cnpj<'data>{
55type Error = &'static str;
56
57    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
58        if Self::is_valid(value) {
59            Ok(Self(value))        
60        } else {
61            Err("cnpj inválido")
62        }
63    }
64}
65
66impl<'data> TryFrom<&'data str> for Cns<'data>{
67type Error = &'static str;
68
69    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
70        if Self::is_valid(value) {
71            Ok(Self(value))        
72        } else {
73            Err("Cartão de saúde inválido")
74        }
75    }
76}
77
78impl<'data> TryFrom<&'data str> for Pis<'data>{
79type Error = &'static str;
80
81    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
82        if Self::is_valid(value) {
83            Ok(Self(value))        
84        } else {
85            Err("Número do Pis inválido")
86        }
87    }
88}
89
90impl<'data> TryFrom<&'data str> for Renavam<'data>{
91type Error = &'static str;
92
93    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
94        if Self::is_valid(value) {
95            Ok(Self(value))        
96        } else {
97            Err("Número do Renavam inválido")
98        }
99    }
100}
101
102impl<'data> TryFrom<&'data str> for Rg<'data>{
103type Error = &'static str;
104
105    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
106        if Self::is_valid(value) {
107            Ok(Self(value))        
108        } else {
109            Err("Não foi possível validar o número de identidade. Verifique a legislação do seu Estado")
110        }
111    }
112}
113
114impl<'data> TryFrom<&'data str> for TituloEleitor<'data>{
115type Error = &'static str;
116
117    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
118        if Self::is_valid(value) {
119            Ok(Self(value))        
120        } else {
121            Err("Número do Título de Eleitor inválido")
122        }
123    }
124}
125
126impl<'data> TryFrom<&'data str> for CodigoBarrasGs1<'data>{
127type Error = &'static str;
128
129    fn try_from(value: &'data str) -> Result<Self, Self::Error> {
130        if Self::is_valid(value) {
131            Ok(Self(value))        
132        } else {
133            Err("Não foi possível validar o dígito verificador do código de barras")
134        }
135    }
136}