In a lot of SO questions and also in a lot of external, reputable resources, such as the tokio tutorial I've seen people use an additional async block such as:
tokio::spawn(async move {
process(socket).await;
});
instead of doing just
tokio::spawn(process(socket));
Both resolve to some Future and spawn() expects
pub fn spawn<T>(future: T) ....
where T: Future + ....
so I cannot understand the need for the additional async {} block.
Is it really necessary ? And is there any difference besides being a "visual marking" that this is an async code?