passay_rs/rule/
reference.rs1use std::any::Any;
2use std::fmt::Debug;
3
4pub trait Reference: Debug + Any {
6 fn password(&self) -> &str;
7 fn salt(&self) -> &Option<Salt>;
8
9 fn as_any(&self) -> &dyn Any;
10}
11
12pub enum Salt {
13 Prefix(String),
14 Suffix(String),
15}
16
17impl Salt {
18 pub fn prefix(s: String) -> Salt {
19 Salt::Prefix(s)
20 }
21 pub fn suffix(s: String) -> Salt {
22 Salt::Suffix(s)
23 }
24 pub fn apply_to(&self, password: String) -> String {
25 match self {
26 Salt::Prefix(s) => {
27 let mut s = s.to_owned();
28 s.push_str(&password);
29 s
30 }
31 Salt::Suffix(s) => {
32 let mut pass = password.to_owned();
33 pass.push_str(s);
34 pass
35 }
36 }
37 }
38}