1
1
use std:: io;
2
2
3
- use crate :: theme:: { SimpleTheme , TermThemeRenderer , Theme } ;
3
+ use crate :: {
4
+ theme:: { SimpleTheme , TermThemeRenderer , Theme } ,
5
+ validate:: PasswordValidator ,
6
+ } ;
4
7
5
8
use console:: Term ;
6
9
use zeroize:: Zeroizing ;
7
10
8
- type PasswordValidatorCallback < ' a > = Box < dyn Fn ( & String ) -> Option < String > + ' a > ;
11
+ type PasswordValidatorCallback < ' a > = Box < dyn Fn ( & str ) -> Option < String > + ' a > ;
9
12
10
13
/// Renders a password input prompt.
11
14
///
@@ -84,7 +87,7 @@ impl<'a> Password<'a> {
84
87
/// # use dialoguer::Password;
85
88
/// let password: String = Password::new()
86
89
/// .with_prompt("Enter password")
87
- /// .validate_with(|input: &String | -> Result<(), &str> {
90
+ /// .validate_with(|input: &str | -> Result<(), &str> {
88
91
/// if input.len() > 8 {
89
92
/// Ok(())
90
93
/// } else {
@@ -94,21 +97,21 @@ impl<'a> Password<'a> {
94
97
/// .interact()
95
98
/// .unwrap();
96
99
/// ```
97
- pub fn validate_with < V , E > ( & mut self , validator : V ) -> & mut Self
100
+ pub fn validate_with < V > ( & mut self , validator : V ) -> & mut Self
98
101
where
99
- V : Fn ( & String ) -> Result < ( ) , E > + ' a ,
100
- E : ToString ,
102
+ V : PasswordValidator + ' a ,
103
+ V :: Err : ToString ,
101
104
{
102
105
let old_validator_func = self . validator . take ( ) ;
103
106
104
- self . validator = Some ( Box :: new ( move |value : & String | -> Option < String > {
107
+ self . validator = Some ( Box :: new ( move |value : & str | -> Option < String > {
105
108
if let Some ( old) = & old_validator_func {
106
109
if let Some ( err) = old ( value) {
107
110
return Some ( err) ;
108
111
}
109
112
}
110
113
111
- match validator ( value) {
114
+ match validator. validate ( value) {
112
115
Ok ( ( ) ) => None ,
113
116
Err ( err) => Some ( err. to_string ( ) ) ,
114
117
}
0 commit comments