gpt4 book ai didi

casting - 非原始到 Rust 中的原始转换?

转载 作者:行者123 更新时间:2023-11-29 08:15:49 25 4
gpt4 key购买 nike

我正在尝试验证 Rust 中的 IP 地址,但我找不到将 str 转换为 u8 且不涉及使用 nightly 的解决方案使用rust :

use std::net::{IpAddr, Ipv4Addr};

fn verify_address(address: String) -> bool {
let v: Vec<&str> = address.split('.').collect();

let v_u8: Vec<u8> = v.iter().map(|c| *c.to_owned() as u8).collect();

let addr = IpAddr::V4(Ipv4Addr::new(v_u8[0], v_u8[1], v_u8[2], v_u8[3]));
//.expect("ERR: Error parsing IPv4 address!");

if !addr.is_ipv4() {
return false;
}
return true;
}
error[E0605]: non-primitive cast: `str` as `u8`
--> src/lib.rs:6:42
|
6 | let v_u8: Vec<u8> = v.iter().map(|c| *c.to_owned() as u8).collect();
| ^^^^^^^^^^^^^^^^^^^
|
= note: an `as` expression can only be used to convert between primitive types. Consider using the `From` trait

最佳答案

请重新阅读关于 error handling 的章节.你不需要这一切:

use std::net::Ipv4Addr;

fn main() {
let ip = "127.0.0.1".parse::<Ipv4Addr>();

match ip {
Ok(ip) => println!("valid"),
Err(e) => println!("invalid"),
}
}

关于您的问题,您只能对...原始类型使用原始类型转换。如果将 &str 转换为另一种类型,则必须使用 FromInto,或者 parse

关于casting - 非原始到 Rust 中的原始转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52279538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com