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()