You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中使用match匹配用户输入字符串时报错该如何解决?

问题原因

  • 缺少std::io模块导入,直接调用io::stdin会触发未定义路径错误
  • read_line方法读取用户输入时,会将按下回车产生的换行符一起存入字符串,比如输入X后按回车,实际to_start的内容是"X\n"(Windows环境下是"X\r\n"),和"X"、"O"字面量完全不匹配
  • match表达式的待匹配值是String类型,右侧的匹配分支是字符串字面量(&str类型),类型不匹配会直接编译报错

修复后可正常运行的代码

use std::io; // 导入io模块

fn main(){
    let board: [[i32; 3]; 3] = [[0, 0, 0], [0, 0, 0], [0, 0, 0]];
    println!("{:?}", board);
    println!("Who will start, X or O?");
    let mut to_start = String::new();
    io::stdin().read_line(&mut to_start).expect("An error was encountered");
    // 去除首尾空白字符(包括换行、空格、回车)后再匹配
    match to_start.trim() {
        "X" => println!("Player 1 starts"),
        "O" => println!("Player 2 starts"),
        _ => println!("Please enter a valid input"),
    };
}

内容的提问来源于stack exchange,提问作者Nicke7117

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:06:03