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
相关产品推荐
相关产品推荐

