MST

星途 面试题库

面试题:Rust枚举类型变体在模式匹配中的复杂应用

假设有一个Rust枚举类型`Message`,它有四个变体:`Quit`,`Move { x: i32, y: i32 }`,`Write(String)`,`ChangeColor(i32, i32, i32)`。编写一个函数`process_message`,该函数接受`Message`枚举作为参数,使用模式匹配对不同的变体进行处理。`Quit`变体需要返回一个表示程序退出的字符串;`Move`变体需要返回移动的坐标信息字符串;`Write`变体需要返回写入的字符串内容;`ChangeColor`变体需要返回颜色的RGB值组成的字符串。同时,要处理好匹配的各种边界情况,例如在处理`Write`变体时,如果字符串为空要返回特定提示。
17.4万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
}

fn process_message(msg: Message) -> String {
    match msg {
        Message::Quit => "Program is quitting".to_string(),
        Message::Move { x, y } => format!("Moving to coordinates: ({}, {})", x, y),
        Message::Write(s) => {
            if s.is_empty() {
                "No content to write".to_string()
            } else {
                s
            }
        },
        Message::ChangeColor(r, g, b) => format!("Color RGB: ({}, {}, {})", r, g, b),
    }
}