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

Rust中函数末尾无分号返回表达式比return;性能更优吗?

在Rust里,函数末尾用return foo;和无分号表达式返回有啥区别?

性能上完全没差

别纠结性能——Rust编译器对这两种写法的优化结果完全一致,最终生成的机器码没有任何区别。不管是显式写return还是靠末尾无分号的表达式返回,本质都是返回同一个值,编译器不会搞区别对待。

风格和可读性看场景与习惯

  • Rust本身是表达式优先的语言,函数默认返回最后一个表达式的结果,这是语言设计的核心逻辑。社区里大部分开发者更偏好无分号的写法,因为它更贴合Rust的设计思路,代码也更简洁利落。
  • 如果你确实觉得显式return读起来更清楚,接着用也没问题,但最好在项目里保持风格统一——要么全用显式return,要么全用表达式返回,别混着写,不然代码看着乱。
  • 额外提一句:显式return更多用来处理提前返回的情况(比如函数中间某个条件满足了,直接跳出返回),末尾返回用表达式写法是社区的常规操作。

你的示例两种写法完全等价

你贴的这两个函数:

// 显式return写法
pub fn user_exist(&self, key: &str) -> Result<(), ApiError> {
    let mut cache: PooledConnection<Client> = connection()?;

    cache.exists(key)?;
    return Ok(());
}

// 表达式返回写法
pub fn user_exist(&self, key: &str) -> Result<(), ApiError> {
    let mut cache: PooledConnection<Client> = connection()?;

    cache.exists(key)?;
    Ok(())
}

编译出来的结果一模一样,功能上没有任何区别,纯粹就是写法风格不同。

内容的提问来源于Stack Exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:10:17