اکوسیستم Rust
اکوسیستم Rust از تعدادی ابزار تشکیل شده است که مهمترین آنها عبارتند از:
-
rustc
: کامپایلر Rust که فایلهای.rs
را به باینری و سایر فرمتهای میانی تبدیل میکند. -
cargo
: مدیر وابستگی Rust و build tool آن است. Cargo می داند که چگونه وابستگی ها را که معمولاً در https://crates.io میزبانی می شوند دانلود کند و هنگام ساخت پروژه آنها را بهrustc
منتقل میکند. Cargo همچنین دارای یک دستگاه تست داخلی است که برای اجرای unit test استفاده می شود. -
'rustup': نصب کننده و به روز رسانی rustchain ابزار. این ابزار برای نصب و به روز رسانی "rustc" و "cargo" در هنگام انتشار نسخه های جدید Rust استفاده می شود. علاوه بر این، "rustup" همچنین می تواند اسناد را برای کتابخانه استاندارد دانلود کند. شما می توانید چندین نسخه از Rust را در یک زمان نصب کنید و "rustup" به شما اجازه می دهد تا در صورت نیاز بین انها تغییر دهید.
نکات کلیدی:
-
Rust یک برنامه سریع برای انتشار نسخههای جدید دارد و هر شش هفته یک نسخه جدید منتشر می شود. نسخههای جدید سازگاری با نسخههای قدیمی را حفظ میکنند --- به علاوه قابلیتهای جدید را فعال میکنند.
-
سه کانال انتشار وجود دارد: "stable"، "beta"، و "nightly".
-
ویژگی های جدید در "nightly" آزمایش می شوند ، "beta" چیزی است که هر شش هفته "stable" می شود.
-
همچنین میتوان وابستگیها را از registries، پوشهها و git و موارد دیگر برطرف کرد.
-
Rust همچنین نسخه editions دارد: نسخه فعلی Rust 2021 است. نسخه های قبلی Rust 2015 و Rust 2018 بودند.
-
نسخه ها مجاز به ایجاد تغییرات backwards incompatible در زبان هستند.
-
برای جلوگیری از breaking code، نسخهها اختیاری انتخاب میشوند که: شما نسخه مورد نظر برای crate خود از طریق فایل
Cargo.toml
انتخاب میکنید. -
برای جلوگیری از شکاف در اکوسیستم، کامپایلرهای Rust می توانند کدهای نوشته شده برای نسخه های مختلف را ترکیب کنند.
-
لازم به ذکر است که استفاده از کامپایلر به طور مستقیم(rustc) و نه از طریق
cargo
بسیار غیرمعمول است (اکثر کاربران هرگز این کار را نمی کنند). -
ممکن است لازم به ذکر باشد که Cargo خود یک ابزار بسیار قدرتمند و جامع است. این است که قادر به بسیاری از ویژگی های پیشرفته از جمله اما نه محدود به:
- ساختار پروژه/بسته
- workspaces
- وابستگی های Dev و وابستگیهای Runtime Management/Caching
- build scripting
- global installation
- همچنین با command plugin فرعی (مانند cargo clippy) قابل توسعه است.
-
در official Cargo Book بیشتر بخوانید.
-