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

基于编译时条件赋值PathBuf变量却得到单元类型()的问题

问题原因及解决

你的代码里processed_files_location被推断为单元类型(),核心原因是if分支的末尾加了分号。

在Rust中,表达式的返回值是最后一行的结果,但如果给表达式加上尾部分号,它就会被转为语句,语句的返回值固定是()。你的if和else分支最后一行都加了分号,导致整个if表达式的返回值变成(),最终变量类型被推断为()。

修正后的代码如下:

// USE_OLD_DATA set at compilation time to FALSE or TRUE
let root = env::current_dir().unwrap();

let processed_files_location = if USE_OLD_DATA {
    root.join("Result Data 10-28-2020")
} else {
    root.join("Result Data")
};

去掉分支末尾的分号后,root.join()返回的PathBuf就会作为if表达式的结果,赋值给processed_files_location,变量类型也会被正确推断为PathBuf。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:16:02