[Rust] async-std crate

async-std๋Š” ๋ง ๊ทธ๋Œ€๋กœ, rust์˜ std ๊ธฐ๋Šฅ๋“ค์„ asyncํ•˜๊ฒŒ ๊พธ๋ฉฐ์„œ ์ œ๊ณตํ•˜๋Š” ํฌ๋ ˆ์ดํŠธ๋‹ค.
async/await๋ฅผ ํ™œ์šฉํ•œ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ€์ถฉ ์ด๋Ÿฐ์‹์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿผ ์šฐ์„  attribute ๊ธฐ๋Šฅ์œผ๋กœ main์„ async๋กœ ๋งŒ๋“ค์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋‹ค.

์ด๋ž˜์•ผ ์ข€ ์ œ๋Œ€๋กœ ์“ฐ์ง€ ์•Š๊ฒ ๋Š”๊ฐ€


๋Œ๋ฆฌ๋ฉด ์ž˜ ๋Œ์•„๊ฐ„๋‹ค.

์ด์ œ ์ œ๋Œ€๋กœ ๋œ ๊ธฐ๋Šฅ์„ ์จ๋ณด์ž.
async-std๋Š” std์˜ fs, future, io, net, os, path, pin, prelude, process, stream, sync๋ฅผ async๋กœ ๊ฐ์‹ธ์„œ ์ œ๊ณตํ•œ๋‹ค.
๊ทธ์ค‘์— ์•„๋งˆ ๊ฐ€์žฅ ์ž์ฃผ ์“ฐ์ผ๋งŒํ•œ๊ฒŒ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์ผ ๊ฒƒ์ด๋‹ค.
ํŒŒ๋ผ๋ฏธํ„ฐ๋‚˜ ๋ฐ˜ํ™˜๊ฐ’์€ ๊ฑฐ์˜ ๋‹ค ๋™์ผํ•˜๋‹ค. ๊ทธ๋ƒฅ async๋ผ์„œ Future๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋ฟ.

๋‹จ์ˆœํžˆ ์ €๋ ‡๊ฒŒ ๊ฐ์‹ธ๊ธฐ๋งŒ ํ•œ ๊ฒƒ๋„ ์žˆ๊ณ , ์ถ”๊ฐ€๋กœ std::thread ๋“ฑ์˜ ์Šค๋ ˆ๋”ฉ ํ•จ์ˆ˜๋“ค์„ ์ž˜ ๊พธ๋ฉฐ์„œ ์ œ๊ณตํ•˜๋Š” task ๋ชจ๋“ˆ๋„ ์žˆ๋‹ค.
task::spawn์€ thread::spawn๊ณผ ๊ฑฐ์˜ ๋™๋“ฑํ•œ ํ•จ์ˆ˜๋‹ค.
์Šค๋ ˆ๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ๋Œ๋ฆฌ๋Š”๋ฐ, ๋Œ€์‹  async Future๋ฅผ ๋ฐ˜ํ™˜ํ•ด ํ•ธ๋“ค๋ง์ด ๋” ํŽธํ•˜๋‹ค.

์‹ค์ œ๋กœ ๋ฌด์ž‘์œ„ํ•˜๊ฒŒ ๋™์‹œ์„ฑ์„ ๊ฐ€์ง€๋Š” ์ถœ๋ ฅ์„ ๋ณด์ธ๋‹ค.

์ด์™ธ์—๋„ ๋ธ”๋Ÿญ๊ฑธ์–ด์ฃผ๋Š” block_on, sleep ๋“ฑ ์œ ์šฉํ•œ ํ•จ์ˆ˜๋“ค์ด ๋ช‡๊ฐ€์ง€ ์ œ๊ณต๋œ๋‹ค.
์ž์„ธํ•œ ๊ฒƒ์€ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.
https://docs.rs/async-std/1.6.3/async_std/task/index.html

๊ทธ๋ ‡๋‹ค.


์ฐธ์กฐ
https://docs.rs/async-std/1.6.3/async_std/