[Rust] async ํด๋ก์
Rust 1.85 (Rust 2024)๋ถํฐ async clusure ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค.
๋จํธ์ ์ผ๋ก ๋ณด๋ฉด ๊ทธ๋ฅ ํด๋ก์ ์ async ๋ฒ์ ์์ปท์ด ์๊ฒผ๋ค๊ณ ํ ์๋ ์๋๋ฐ, ๋ถํธํ๋ ๋ง์ ์ ๋ค์ด ํด์๊ฐ ๋๋ค.
๊ณผ๊ฑฐ์ ์์๋ ๋ฌธ์ ๋ค์ด ๊ถ๊ธํ๋ค๋ฉด, ๋ณ๋ ํฌ์คํธ๋ฅผ ์ฐธ์กฐํ๊ธธ ๋ฐ๋๋ค.
https://blog.naver.com/sssang97/223745667272
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ผ๋ฐ ํด๋ก์ ์ ๋ค๋ฅด์ง ์๋ค.
async๋ง ๋ถ์ด๋ฉด ๋๊ณ , ํจ์ ํธ์ถํ๋ฏ์ด ํธ์ถํ๋ฉด ๋๋ค.
Future ๋ฐํ์ด๋ผ await์ ๊ฑธ์ด์ผ ํ๋ค๋ ๊ฒ๋ง ๋นผ๋ฉด ๋ค๋ฅผ๊ฒ์ ์๋ค.

async ํด๋ก์ ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ฐ๊ธฐ
์๋๋ผ๋ฉด ์ด ๋ถ๋ถ์ด async Rust์์ ๊ฝค ๊ณจ์น์ํ ๋ถ๋ถ์ด์๋๋ฐ, async ํด๋ก์ ์ ๋์
์ผ๋ก๋ ๋ณ๋ก ๋จธ๋ฆฌ ๊ตด๋ฆด ๊ฒ ์์ด ์์ฑํ ์ ์๊ฒ ๋์๋ค.
์๋ง ์ผ๋ฐ ํจ์๋ฅผ ์ฝ๋ฐฑ์ผ๋ก ๋ฐ์๋ Fn ๊ฐ์ ํจ์์ฉ ํธ๋ ์์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ธฐ์ตํ ๊ฒ์ด๋ค.
async ํด๋ก์ ๋ ํจ์๋ฅผ ๋ฐ๊ธธ ์ํ๋ค๋ฉด, Fn์ 1:1๋ก ๋์๋๋ async์ฉ ํธ๋ ์์ธ AsyncFn๋ฅผ ์ฌ์ฉํด์ ํ์ ์ ์ฝ์ ํํํ ์ ์๋ค.
์ด๋ฌ๋ฉด "i32 ์ธ์๋ฅผ 2๊ฐ ๋ฐ๊ณ , Result
๋ฐํํ์
์ Future๋ฅผ ๋ช
์ํ ํ์๋ ์๋ค.
AsyncFn ์ธ์๋ FnOnce, FnMut์ ๋์๋๋ AsyncFnOnce, AsyncFnMut๊ฐ ๋ฐ๋ก ์กด์ฌํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉํ ๋๋ ๊ทธ๋ฅ async ํด๋ก์ ๋ฅผ ๋๊ฒจ์ ์ฌ์ฉํ๋ฉด ๋๋ค.

๊ทธ๋ฌ๋ฉด ์ ๋์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ ๊ฒ์ด๋ค.