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)
}
}
nslookup market.yandex
Server: UnKnown
Address: ...
Non-authoritative answer:
Name: market.yandex
Addresses: 2a02:6b8::242
213.180.204.242
ддр5 ненужен. Достаточно и 4й