В JavaScript асин * c код написан с обещаниями и синтаксисом async
/ await
, аналогичным Rust. Обычно считается избыточным (и поэтому не рекомендуется) возвращать и в ожидании Promise, когда его можно просто вернуть (т. Е. Когда асинхронная функция c выполняется как последняя вещь в другой функции):
async function myFn() { /* ... */ }
async function myFn2() {
// do setup work
return await myFn()
// ^ this is not necessary when we can just return the Promise
}
Мне интересно, применяется ли подобный шаблон в Rust. Должен ли я предпочесть это:
pub async fn my_function(
&mut self,
) -> Result<()> {
// do synchronous setup work
self.exec_command(
/* ... */
)
.await
}
Или это:
pub fn my_function(
&mut self,
) -> impl Future<Output = Result<()>> {
// do synchronous setup work
self.exec_command(
/* ... */
)
}
Первый мне кажется более эргономичным c, но я подозреваю, что последний может быть более производительным. Это тот случай?