我通常在函数的末尾使用return foo;
,因为我觉得这样更容易理解。但是我不确定这是否是个好主意,因为"正常"的返回表达式是没有分号的。我应该使用没有分号的返回表达式吗(例如为了更好的性能)?
示例:
//My typical functions
pub fn user_exist(&self, key: &str) -> Result<(), ApiError> {
let mut cache: PooledConnection<Client> = connection()?;
cache.exists(key)?;
return Ok(());
}
// Is it better to use this?
pub fn user_exist(&self, key: &str) -> Result<(), ApiError> {
let mut cache: PooledConnection<Client> = connection()?;
cache.exists(key)?;
Ok(())
}
1条答案
按热度按时间hm2xizp91#
编译器并不区分这两者,它们是完全等价的。考虑下面两个例子:
Looking at the assembly在godbolt编译器资源管理器中,我们得到相同的代码:
从样式的Angular 来看,除非提前返回,否则不使用return语句是惯例,更多细节请参见this question。
edit:@Chayim Friedman提出了一个很好的观点,即查看程序集并不能证明它们是等价的。尽管同样也不是很难证明,但这两个函数的looking at the MIR提供了进一步的证据,证明编译器对这两个返回值的处理是相同的: