@@ -19,34 +19,35 @@ use super::AsStr;
19
19
use crate :: error:: Error ;
20
20
21
21
pub fn apply < T : PhoneNumber > ( v : & T , _: ( ) ) -> Result < ( ) , Error > {
22
- if let Err ( e) = v. validate_phone_number ( ) {
23
- return Err ( Error :: new ( format ! ( "not a valid phone number: {e}" ) ) ) ;
22
+ match v. validate_phone_number ( ) {
23
+ Ok ( true ) => Ok ( ( ) ) ,
24
+ Ok ( false ) => Err ( Error :: new ( "not a valid phone number" ) ) ,
25
+ Err ( e) => Err ( Error :: new ( format ! ( "not a valid phone number: {e}" ) ) ) ,
24
26
}
25
- Ok ( ( ) )
26
27
}
27
28
28
29
pub trait PhoneNumber {
29
30
type Error : Display ;
30
31
31
- fn validate_phone_number ( & self ) -> Result < ( ) , Self :: Error > ;
32
+ fn validate_phone_number ( & self ) -> Result < bool , Self :: Error > ;
32
33
}
33
34
34
35
impl < T : AsStr > PhoneNumber for T {
35
36
type Error = phonenumber:: ParseError ;
36
37
37
- fn validate_phone_number ( & self ) -> Result < ( ) , Self :: Error > {
38
- let _ = phonenumber:: PhoneNumber :: from_str ( self . as_str ( ) ) ?;
39
- Ok ( ( ) )
38
+ fn validate_phone_number ( & self ) -> Result < bool , Self :: Error > {
39
+ let number = phonenumber:: PhoneNumber :: from_str ( self . as_str ( ) ) ?;
40
+ Ok ( number . is_valid ( ) )
40
41
}
41
42
}
42
43
43
44
impl < T : PhoneNumber > PhoneNumber for Option < T > {
44
45
type Error = T :: Error ;
45
46
46
- fn validate_phone_number ( & self ) -> Result < ( ) , Self :: Error > {
47
+ fn validate_phone_number ( & self ) -> Result < bool , Self :: Error > {
47
48
match self {
48
49
Some ( value) => value. validate_phone_number ( ) ,
49
- None => Ok ( ( ) ) ,
50
+ None => Ok ( true ) ,
50
51
}
51
52
}
52
53
}
0 commit comments