&str.parse() 是怎么回事?

axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())

// 引入std::str::FromStr
use std::str::FromStr;

// 定义一个枚举类型Color,表示颜色
#[derive(Debug, PartialEq)]
enum Color {
    Red,
    Green,
    Blue,
}

// 定义一个错误类型ParseColorError,表示解析颜色失败
#[derive(Debug, PartialEq)]
struct ParseColorError;

// 为Color类型实现FromStr特性
impl FromStr for Color {
    // 指定错误类型为ParseColorError
    type Err = ParseColorError;

    // 定义from_str函数,接受一个&str类型的参数,返回一个Result<Color, ParseColorError>类型的值
    fn from_str(s: &str) -> Result<Self, Self::Err> {
        // 根据输入的字符串,匹配不同的颜色变体,并返回Ok(Color)变体
        match s {
            "red" => Ok(Color::Red),
            "green" => Ok(Color::Green),
            "blue" => Ok(Color::Blue),
            // 如果输入的字符串不是有效的颜色,返回Err(ParseColorError)变体
            _ => Err(ParseColorError),
        }
    }
}

fn main() {
    // 测试from_str函数,使用不同的字符串作为参数
    let c1 = Color::from_str("red");
    let c2 = Color::from_str("yellow");
    let c3 = "green".parse::<Color>();

    // 打印结果
    println!("c1 = {:?}", c1); // 输出 c1 = Ok(Red)
    println!("c2 = {:?}", c2); // 输出 c2 = Err(ParseColorError)
    println!("c3 = {:?}", c3); // 输出 c3 = Ok(Green)
}
let c: Color = "green".parse().unwrap()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值