Runtimes
یک runtime برای انجام عملیات به صورت ناهمزمان از (a_reactor_) پشتیبانی می کند و مسئول اجرای futureها (an executor) است. Rust یک runtime داخلی ندارد، اما چندین گزینه دیگر در دسترس است:
- Tokio: کارایی(performant)، با یک اکوسیستم با کارایی بالا به خوبی توسعه یافته مانند Hyper برای HTTP یا [Tonic] (https://github) .com/hyperium/tonic) برای gRPC.
- async-std:: هدفش این است که یک "std for async" باشد و شامل یک runtime اولیه در
async::task
است. - smol: ساده و سبک است
چندین برنامه بزرگتر زمان اجرا (runtime) مخصوص به خود را دارند. برای مثال، Fuchsia اکنون یکی runtime دارد.
-
توجه داشته باشید که از میان زمانهای اجرا ذکر شده، فقط Tokio در playground زبان Rust پشتیبانی میشود.playground همچنین اجازه ورود/خروجی (I/O) را نمی دهد، بنابراین بیشتر چیزهای async جالب نمیتوانند در playground اجرا شوند.
-
Futureها از این جهت «بیاثر(inert)» هستند که هیچ کاری انجام نمیدهند (حتی عملیات I/O را شروع نمیکنند) مگر اینکه یک مجری(executor) وجود داشته باشد که آنها را polling کند. به عنوان مثال، این با JS Promises متفاوت است که حتی اگر هرگز استفاده نشوند تا پایان کامل شدن برنامه اجرا خواهند شد.