【Rust】IPv4のポートを除いたアドレスをスライスする

IPv4: 10進数表記で 「3桁:3桁:3桁:3桁」
*3桁の数字は、0 〜 255 の範囲
例:192.168.1.10

fn main() {
    let str = "192.168.33.10:53218".to_string();
    let pos = str.find(':').unwrap();
    println!("{}", &str[..pos]);

}

Compiling app v0.1.0 (/home/vagrant/dev/rust/app)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.46s
Running `target/debug/app`
192.168.33.10

“:”があるかないかを判定してから、スライスをした方が良さそう。 ただ、これ、IPv4だけなんだよな… IPv6だったらどうしよう…

pub fn slice_ipv4(str: &String) -> String {
    if str.find(':').is_some() {
        let pos = str.find(':').unwrap();
        return (&str[..pos]).to_string()
    } 
    return str.to_string()
}