Во вторых в соответствии с правилами безопасности пароль никогда не должен покидать клиентское устройство, отправлять можно только хэш пароля, а шифрование пароля должно быть исключительно на клиентском устройстве
fn main() {
let mut v: Vec<Box<dyn MyIntoString>> = vec![];
v.push(Box::new(42i32));
v.push(Box::new(42.5f64));
v.push(Box::new("test"));
for i in v {
let s = i.into_string();
println!("{s}");
}
}
// Заводим свой trait который берёт ссылку на исходный объект, а не забирает ownership
trait MyIntoString {
fn into_string(&self) -> String;
}
// Делаем какой-нибудь blanket implementation
impl<T: std::fmt::Display> MyIntoString for T {
fn into_string(&self) -> String {
format!("{}", self)
}
}