در اینجا نحوه خیس کردن پاهای خود با Rust، از استفاده از زنجیره ابزار Rust گرفته تا ایجاد پروژه، کار با کد شخص ثالث، مدیریت کتابخانه ها و موارد دیگر آورده شده است.
- درک انتشار Rust
- یک سیستم عامل برای توسعه Rust انتخاب کنید
- راه اندازی Rust خود را با rustup شروع کنید
- IDE خود را برای Rust پیکربندی کنید
- اولین پروژه Rust خود را ایجاد کنید
- کار با جعبه های Rust
- Cross-compile Rust در یک پلتفرم دیگر
- با سایر پروژه های Rust کار کنید
در چند سال گذشته، Rust از یک کنجکاوی ایجاد شده در آزمایشگاه کارمندان موزیلا به یک رقیب قوی برای نسل بعدی برنامههای کاربردی بومی و راهحلهای فلزی لخت تبدیل شده است. این پیشرفتها از Rust حاصل میشود که زنجیره ابزار و سیستم مدیریت اجزای خود را به همراه ویژگیها و ویژگیهای محبوب خاص ارائه میکند.
این مقاله برای توسعه دهندگانی است که به تازگی با Rust آشنا شده اند یا آن را برای پروژه های آینده در نظر می گیرند. راهاندازی یک محیط کاری در Rust، پیکربندی یک IDE، و بهترین استفاده از مجموعه ابزار توسعه برنامههای کاربردی عالی Rust را بررسی خواهیم کرد.
نرم افزار ایمن تر را با Rust توسعه دهید
با Rust و ویژگیهای آن برای ایجاد نرمافزار سریع و در سطح سیستم، به سرعت به سرعت برسید. این توضیحدهنده متحرک دو دقیقهای نشان میدهد که چگونه Rust مشکلات حافظه و مدیریت را در برنامههای مدرن دور میزند.
درک انتشار Rust
زنجیره ابزار Rust عمدتاً از کامپایلر Rust، rustc
به همراه ابزارهایی برای مدیریت نصب Rust تشکیل شده است. از آنجایی که Rust در حال توسعه دائمی است، زنجیره ابزار آن طوری طراحی شده است که بهروزرسانی آسان باشد.
پروژههای نرمافزاری اغلب از طریق چندین کانال به منظور جداسازی نسخههای پایدار و بتا کد ارائه میشوند. Rust به همین ترتیب عمل می کند و سه کانال را برای به روز رسانی زنجیره ابزار ارائه می دهد:
- پایدار: نسخههای مهم، که هر شش هفته یا بیشتر ظاهر میشوند.
- بتا: نامزدهای نسخه اصلی بعدی، که بیشتر ظاهر میشوند.
- شب: فوریترین ساخت، با دسترسی به ویژگیهای پیشرفته، اما هیچ تضمینی برای پایداری آنها وجود ندارد.
همانطور که توسعه دهنده کارول کوچمارسکی اشاره کرده است، بهترین کار به کانال شبانه Rust به عنوان زبان خود فکر کنید. برخی از ویژگیهای Rust فقط در کانال شبانه در دسترس هستند و فقط با دستورالعملهای ویژه کامپایلر فعال میشوند. به عبارت دیگر، آنها حتی در کانال های بتا یا پایدار کامپایل نمی شوند.
این به دلیل طراحی است، زیرا هیچ تضمینی وجود ندارد که ویژگیهای شبانه در جای دیگری پشتیبانی شوند. با این حال، بسیاری از این ویژگیها در نهایت از کانال شبانه خارج میشوند و به نسخههای بتا و پایدار میرسند. (برای مثال، کامپایل کردن در WebAssembly در نسخه پایدار Rust 1.30 کار می کند.)
این برای شما به عنوان یک توسعه دهنده چه معنایی دارد؟ به طور خلاصه:
- از stable برای کار تولید واقعی استفاده کنید.
- از بتا برای آزمایش نرم افزار فعلی در برابر نسخه های آینده استفاده کنید تا ببینید آیا ممکن است چیزی در ارتقاء خراب شود.
- فقط از شب برای آزمایشهای جعبه ایمنی با جدیدترین ویژگیهای Rust استفاده کنید.
یک سیستم عامل برای توسعه Rust انتخاب کنید
Rust از هر سه پلتفرم اصلی پشتیبانی میکند—Windows، Linux و macOS—در هر دو نسخه ۳۲ و ۶۴ بیتی، با باینری های رسمی برای هر کدام. تعداد زیادی از پلتفرم های دیگر نیز دارای باینری های رسمی هستند، اما سطح پوشش تست خودکار را ندارند. این پلتفرمهای درجه دوم عبارتند از ARMv6 و ARMv7 برای iOS، Android و Linux. MIPS Linux و MIPS64 Linux; نسخه های ۳۲ بیتی x86 iOS، Windows و Linux. و WebAssembly. پلتفرمهای دیگر، مانند Windows XP یا HaikuOS آزمایشی، از طریق ساختهای غیررسمی پشتیبانی میشوند.
تیم توسعه Rust بیان کرده است که قابل حمل بودن به طور گسترده یکی از ماموریت های Rust نیست. برای مثال، اگرچه Rust در بسیاری از معماری های ARM در دسترس است، هیچ تضمینی وجود ندارد که Rust به طور رسمی در پلتفرم های سخت افزاری پایین رده پشتیبانی شود.
گفته شد، باید یک ساخت Rust پشتیبانی شده برای اکثر موارد استفاده رایج و رایج – یعنی Windows، Linux، و macOS 32 و ۶۴ بیتی موجود باشد.
اگر قصد دارید در Rust در ویندوز توسعه دهید، زنجیره ابزار خود را در نظر داشته باشید. Rust از دو زنجیره ابزار ویندوز پشتیبانی می کند:
- نسخه اصلی Microsoft Visual C (MSVC) ABI
- Gnu ABI استفاده شده توسط پیوند دهنده GCC
از آنجایی که تقریباً تمام نرم افزارهای C/C++ ساخته شده در ویندوز از MSVC استفاده می کنند، بیشتر اوقات می خواهید از زنجیره ابزار MSVC استفاده کنید. اگر زمانی به GCC نیاز داشته باشید، به احتمال زیاد برای تعامل با کتابخانه های شخص ثالث ساخته شده در Windows با GCC خواهد بود.
خبر خوب این است که سیستم مدیریت زنجیره ابزار Rust به شما امکان می دهد هر دو زنجیره ابزار MSVC و GCC را نصب کنید و به شما امکان می دهد بین آنها بر اساس پروژه به پروژه جابجا شوید.
یکی از اهداف کامپایل Rust WebAssembly است، به این معنی که می توانید در Rust بنویسید و در یک مرورگر وب مستقر کنید. خود WebAssembly هنوز در اطراف لبه ها ناهموار است و Rust نیز از آن پشتیبانی می کند. اما اگر جاهطلب هستید و میخواهید دستهایتان به هم ریخته باشد، این کتاب را بخوانید، جزئیات فرآیند کامپایل WebAssembly به Rust. این کتاب که توسط مهندسان Rust و WebAssembly نوشته شده است، شامل آموزشی برای اجرای Conway’s Game of Life است که به زبان Rust نوشته شده و به عنوان WebAssembly به کار گرفته شده است.
راه اندازی Rust خود را با rustup شروع کنید
Rust یک نصب کننده همه کاره و سیستم نگهداری زنجیره ابزار به نام rustup
را ارائه می دهد. rustup را دانلود و اجرا کنید. آخرین نسخه های Rust toolchain را دریافت کرده و برای شما نصب می کند.
مهمترین ابزارهای نگهداری شده توسط rustup
عبارتند از:
-
خود
rustup
: هر زمان که نسخههای جدیدrustup
یا ابزارهای دیگر منتشر میشوند، فقط میتوانیدrustup update
را اجرا کنید و همه چیز را بهطور خودکار بهروزرسانی کنید.rustc
: کامپایلر Rust.- Cargo: مدیر بسته و فضای کاری Rust.
به طور پیشفرض، rustup
Rust را از کانال پایدار نصب میکند. اگر میخواهید از نسخههای بتا یا شبانه استفاده کنید، باید آن کانالها را به صورت دستی نصب کنید (برای مثال، با اجرای rustup install nightly
) و Rust را بهطور پیشفرض تنظیم کنید تا از آنها استفاده کند ( rustup پیشفرض شبانه
). همچنین میتوانید بهصورت دستی مشخص کنید از کدام کانال استفاده شود هنگام کامپایل برنامه Rust، بنابراین لازم نیست هر بار که بین پروژه ها حرکت می کنید، پیش فرض را تنظیم و بازنشانی کنید.
شکل ۱. rustup
تمام بخشهای زنجیره ابزار Rust شما را به جدیدترین نسخههایشان بهروز نگه میدارد. در اینجا، زنجیره ابزار شبانه، با اجزای زبانی بیثبات و بالقوه ناپایدار، جدا از نسخه پایدار بهروزرسانی میشود.
همچنین میتوانید از rustup
برای نصب و نگهداری زنجیرههای ابزار سفارشی استفاده کنید. اینها معمولاً توسط ساختهای غیررسمی و شخص ثالث Rust برای پلتفرمهای پشتیبانینشده استفاده میشوند، که معمولاً به لینککنندههای خود یا سایر ابزارهای خاص پلتفرم نیاز دارند.
توجه داشته باشید که فرض پیشفرض دیگری که Rust مطرح میکند این است که فایلهای Cargo – بستههای دانلود شده و اطلاعات پیکربندی – را در یک فهرست فرعی از نمایه کاربر شما ذخیره میکند. این همیشه مطلوب نیست؛ گاهی اوقات افراد آن داده ها را در درایو دیگری می خواهند، جایی که فضای بیشتری وجود دارد، یا در مکانی که در دسترس تر است. اگر میخواهید Cargo در جای دیگری زندگی کند، میتوانید پس از پایان راهاندازی، آن را به صورت دستی جابهجا کنید. این مراحل است:
- همه برنامه هایی را که ممکن است از Cargo استفاده می کنند ببندید.
- دایرکتوری
.cargo
را در نمایه کاربری خود در جایی که می خواهید زندگی کند کپی کنید. - متغیرهای محیطی
CARGO_HOME
وRUSTUP_HOME
را تنظیم کنید تا به دایرکتوری جدید اشاره کنند. PATH
را طوری تنظیم کنید که به فهرست فرعیbin
دایرکتوری جدید اشاره کند.محموله
را تایپ کنید تا مطمئن شوید که محموله به درستی کار می کند.
IDE خود را برای Rust پیکربندی کنید
با وجود اینکه Rust یک زبان نسبتاً جدید است، در حال حاضر از بسیاری از IDE های رایج پشتیبانی قوی کسب کرده است. مانوئل هافمن توسعهدهنده پروژهای را برای ردیابی وضعیت چنین پشتیبانی در وبسایت areweideyet.com حفظ میکند.
کارکرد خوب Rust با IDEها از طریق قابلیتی به نام Rust Language Server (RLS) هدف صریح تیم توسعه آن است. RLS بهجای تجزیهکننده شخص ثالث، بازخورد مستقیمی درباره کد مورد نظر از کامپایلر Rust ارائه میکند.
شکل ۲. پروژه Rust’s Language Server برای کدی که با آن کار می کنید، بازخورد مستقیمی را به یک IDE از کامپایلر Rust ارائه می دهد. کد ویژوال استودیو، که در اینجا نشان داده شده است، دارای برخی از کامل ترین پشتیبانی های موجود برای سرور زبان Rust است.
در اینجا IDE هایی هستند که از Rust پشتیبانی می کنند:
- کد ویژوال استودیو مایکروسافت دارای یک Rust است پسوند پشتیبانی زبان ایجاد شده توسط تیم ابزار توسعه دهنده خود Rust. این سطح از یکپارچگی آن را به یکی از بهترین IDE های پشتیبانی شده برای Rust تبدیل می کند.
- کاربران Eclipse می توانند یک پیش بسته بندی شده را دانلود کنند نسخه Eclipse for Rust، یا از افزونه مستقل Corrosion استفاده کنید برای Eclipse Photon.
- اگر از طرفداران Emacs یا Vim هستید، توسعه دهندگان دیگری مانند شما افزونه های مخصوص Rust را برای هر دو ویرایشگر نوشته اند. Emacs یک حالت مخصوص Rust دارد و Vim یک افزونه دارد برای ارائه برجسته سازی و قالب بندی نحو. پشتیبانی RLS برای Emacs و Vim، اما باید آن را به صورت دستی اضافه و پیکربندی کنید.
- IntelliJ IDEA و Atom میتوانند افزونههایی را برای تکمیل پشتیبانی Rust اضافه کنند.
- Sublime Text از دستور Rust پشتیبانی میکند و افزونهها پشتیبانی عمیقتری از سایر ویژگیها ارائه میکنند.< /li>
اولین پروژه Rust خود را ایجاد کنید
پروژههای Rust دارای ساختار دایرکتوری ثابتی هستند که کد و ابرداده پروژه به روشهای خاصی در آنها ذخیره میشود. کد در یک زیر شاخه src
ذخیره می شود و جزئیات پروژه در دو فایل در فهرست اصلی پروژه، Cargo.toml
(اطلاعات اولیه پروژه) و Cargo.lock
(لیست وابستگی ایجاد شده به طور خودکار). شما می توانید آن ساختار دایرکتوری و ابرداده را با دست ایجاد کنید، اما استفاده از ابزارهای Rust برای انجام کار آسان تر است.
Rust’s ابزار Cargo هم پروژههای Rust و هم کتابخانهها یا «جعبهها، ” آنها استفاده می کنند. برای چرخاندن یک پروژه Rust جدید به نام my_project
در فهرست خود، cargo new my_project
را تایپ کنید. (برای توسعه دهندگان سی شارپ که با .Net Core کار می کنند، به دستور dotnet new
فکر کنید.) پروژه جدید در زیر شاخه ای با آن نام به همراه یک مانیفست پروژه اصلی ظاهر می شود. فایل Cargo.toml
—و یک خرد برای کد منبع پروژه، در یک فهرست فرعی src
.
هنگامی که یک پروژه جدید ایجاد می کنید، یک فایل main.rs
به طور خودکار در فهرست راهنمای src
پروژه ایجاد می شود. این فایل حاوی یک برنامه اصلی “Hello world” است، بنابراین می توانید با کامپایل و اجرای آن، فوراً زنجیره ابزار Rust خود را آزمایش کنید.
در اینجا کد منبع برنامه اصلی “سلام جهان” آمده است:
fn main() {
println!(“Hello World!”);
}
برای ساخت و اجرای برنامه، به ریشه دایرکتوری پروژه بروید و cargo run
را تایپ کنید. توجه داشته باشید که به طور پیش فرض، Cargo پروژه ها را در حالت debug می سازد. برای اجرا در حالت انتشار، از cargo run --release
استفاده کنید. باینری ها در زیر شاخه target/debug
یا target/release
پروژه ساخته می شوند، بسته به اینکه از کدام نمایه تلفیقی استفاده می کنید.
شکل ۳. هنگامی که یک پروژه Rust کامپایل می شود، تمام وابستگی های آن به طور خودکار به دست می آیند و کامپایل می شوند. بازخورد دقیق خط به خط برای هر چیزی که اخطار یا خطای کامل را ایجاد کند ظاهر میشود.
کار با جعبه های Rust
مدیریت بسته بخش کلیدی هر محیط برنامه نویسی مدرن است. برای این منظور، Rust «جعبهها» را ارائه میکند، که کتابخانههای شخص ثالثی هستند که برای توزیع با ابزار Rust بستهبندی شدهاند. میتوانید جعبهها را در رجیستری رسمی بسته Rust، Crates.io پیدا کنید.
اگر پروژه شما به یک جعبه خاص وابستگی دارد، باید آن جعبه را با ویرایش فایل Cargo.toml پروژه. روش استاندارد برای انجام این کار به صورت دستی است — یعنی به سادگی Cargo.toml
را مستقیماً با یک ویرایشگر متن ویرایش کنید. دفعه بعد که پروژه بازسازی می شود، Rust به طور خودکار وابستگی های مورد نیاز را بدست می آورد.
نکته: دو ابزار، cargo-edit و cargo-edit-local، میتواند وابستگیها را از خط فرمان بهروزرسانی کند، اگرچه آنها شخص ثالث غیررسمی هستند. پروژه ها. (توجه داشته باشید که cargo-edit-locally
از سال ۲۰۱۷ به روز نشده است.)
وقتی یک پروژه Rust که به جعبههای خارجی وابسته است میسازید، Cargo بهطور پیشفرض به دنبال آن جعبهها در Crates.io میگردد. ; شما نیازی به دریافت دستی آنها ندارید. همچنین میتوانید به جعبههای پروژهتان با URL به جای نام جعبه مراجعه کنید، در صورتی که به جعبهای نیاز دارید که در رجیستری میزبانی نشده باشد، مانند چیزی از یک مخزن خصوصی.
توجه داشته باشید که برخی از جعبهها فقط روی کانال شبانه Rust نصب و ساخته میشوند، زیرا از ویژگیهای آزمایشی استفاده میکنند که در کانالهای دیگر موجود نیست. اگر در کانال انتشار هستید و سعی می کنید چنین جعبه ای را نصب کنید، هیچ هشداری دریافت نمی کنید تا زمانی که خود کامپایل با شکست مواجه شود. اسناد جعبه معمولاً به این موضوع اشاره میکنند که آیا به کانال شبانه نیاز دارد یا خیر، بنابراین قبل از اضافه کردن آن را بخوانید، چه رسد به کامپایل.
جعبهها میتوانند با باینریها همراه باشند. برخی از آنها ابزارهای خط فرمان هستند که در توسعه Rust استفاده می شوند. بقیه ابزارهای همه منظوره هستند (مانند ripgrep). برای نصب یکی از این جعبه ها، کافی است cargo install
را تایپ کنید. این تنها راه برای توزیع باینری ایجاد شده با Rust نیست، اما راهی مناسب برای توسعه دهندگان Rust است تا آنها را به عنوان بخشی از یک گردش کاری شامل ابزارهای Rust به دست آورند.
Cross-compile Rust در پلتفرم دیگری
از آنجایی که Rust از چندین زنجیره ابزار پشتیبانی میکند، حتی در یک نصب Rust، میتوانید برنامههای Rust را در یک سیستمعامل هدف و محیطی که با محیطی که در حال کامپایل کردن هستید، کامپایل کنید.
چنین کامپایل متقابل به یک زنجیره ابزار در پلتفرمی که روی آن کار می کنید نیاز دارد که با پلتفرم هدف مطابقت داشته باشد. گاهی اوقات، مانند کامپایل متقابل به لینوکس در ویندوز، یا بالعکس، این کار چیزی بیشتر از داشتن رابط GCC را شامل می شود. اما مواقع دیگر، پیچیده تر است. به عنوان مثال، برای کامپایل متقابل در macOS، به کتابخانههای Xcode IDE نیاز دارید تا کار را تمام کنید—cctools
(معادل binutils
اپل) و macOS SDK.
ابزارهای شخص ثالث راههایی برای رفع این مشکلات ارائه میدهند:
پست های مرتبط
آموزش Rust: با زبان Rust شروع کنید
آموزش Rust: با زبان Rust شروع کنید
آموزش Rust: با زبان Rust شروع کنید