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

Rust匹配字符串时默认分支不可达且变量未使用,原因何在?

Rust编译器警告原因解析

先看完整代码片段:

io::stdin()
.read_line(&mut symbol)
.expect("Failed to read line");

println!("You entered {symbol}");

let symbol_x: String = format!("{}", ValidMove::X);
let symbol_o: String = format!("{}", ValidMove::O);

match &symbol {
    symbol_x => ok = true,
    symbol_o => ok = true,
    _ => ok = false,
}

三个警告的具体原因:

  • 第三个分支不可达
    Rust的match分支里,symbol_x和symbol_o在这里是新变量绑定,不是引用之前定义的同名变量。这两个分支会匹配任意输入值,把值绑定到新的symbol_x/symbol_o上,等于覆盖了所有可能的情况,所以第三个_分支永远不会被执行,编译器判定它不可达。

  • symbol_x未使用、symbol_o未使用
    你用let定义的symbol_x和symbol_o两个字符串变量,在match里根本没被用到——match里的symbol_x是重新绑定的新变量,和之前的不是同一个。之前定义的那两个变量从头到尾没参与任何逻辑,所以编译器提示未使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:18:36