私は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)
を与えることができるので可能だと思います。
なぜこれらの2つの方法がありますか? 2番目はもっと慣用的ですか? – Boiethios
@Boiethios 'parse()'は 'from_str()'を内部的に使います。便宜上存在するのは、その特性をインポートする必要はなく、タイプ推論はあなたのために(おそらくあなたの場合も同様に)それを行うため、タイプ名を言及する必要はありません。 * 'parse()'は「より頻繁に使用される」のようにもっと慣用的です。 –
あなたの答えをありがとう。 – Boiethios