1
我在玩Iron
,我遇到了這個問題。如何在不知道特定IP版本的情況下創建`IpAddr`?
fn main() {
let mut router = Router::new();
let address = "127.0.0.1"; // or maybe "::1/128"
let port = 3000;
let ip = std::net::IpAddr::new(address); // does not exist
Iron::new(router).http((ip, port)).unwrap();
}
的http()
方法需要實現ToSocketAddrs
一個結構。 (&str, u16)
實現了這個特性,但我更傾向於在調用http()
方法之前驗證用戶輸入的有效性。
我看到(std::net::IpAddr, u16)
實現了這個特性,但我不知道如何建立一個IpAddr
「agnostically」:也許用戶寫了一個IPv4地址,也許是IPv6。
有沒有辦法從字符串中創建IpAddr
?我認爲這是可能的,因爲我可以給它一個(&str, u16)
。
爲什麼這兩種方式?第二種更習慣嗎? – Boiethios
@Boiethios'parse()'在內部使用'from_str()'。它只是爲了方便而存在的:你不必輸入特徵,而且你通常不必提及類型名稱,因爲類型推斷會爲你做(可能在你的情況下)。我*認爲*'parse()'更「慣用」,就像「更頻繁使用」一樣。 –
感謝您的回答。 – Boiethios