CARGO(1) General Commands Manual CARGO(1)

cargo - مدیر بسته و سیستم ساخت رسمی زبان برنامه‌نویسی Rust

cargo [گزینه‌ها] دستور [آرگومان‌ها]
cargo [گزینه‌ها] --version
cargo [گزینه‌ها] --list
cargo [گزینه‌ها] --help
cargo [گزینه‌ها] --explain کد

این برنامه مدیر بسته و ابزار ساخت زبان برنامه‌نویسی Rust است، قابل دسترس در https://rust-lang.org.

دستور می‌تواند یکی از موارد زیر باشد:

•دستورات داخلی، به بخش زیر مراجعه کنید
•نام‌های مستعار (aliases) https://doc.rust-lang.org/cargo/reference/config.html#alias

cargo-bench(1)
    اجرای بنچ‌مارک‌ها و آزمون‌های کارایی یک بسته.

cargo-build(1)
    کامپایل یک بسته.

cargo-check(1)
    بررسی بسته محلی و تمامی وابستگی‌های آن از نظر خطا بدون تولید فایل نهایی.

cargo-clean(1)
    حذف مصنوعات و فایل‌های بیلد تولیدشده قبلی توسط Cargo.

cargo-doc(1)
    ساخت مستندات بسته.

cargo-fetch(1)
    دریافت وابستگی‌های بسته از شبکه.

cargo-fix(1)
    اصلاح خودکار هشدارهای لینت گزارش‌شده توسط rustc.

cargo-run(1)
    اجرای یک فایل باینری یا مثال از بسته محلی.

cargo-rustc(1)
    کامپایل یک بسته و ارسال گزینه‌های اضافی به کامپایلر.

cargo-rustdoc(1)
    ساخت مستندات بسته با استفاده از فلگ‌های سفارشی مشخص‌شده.

cargo-test(1)
    اجرای آزمون‌های واحد و یکپارچگی یک بسته.

cargo-add(1)
    افزودن وابستگی‌ها به فایل مانیفست Cargo.toml.

cargo-generate-lockfile(1)
    تولید فایل Cargo.lock برای یک پروژه.

cargo-info(1)
    نمایش اطلاعات مربوط به یک بسته در رجیستری. رجیستری پیش‌فرض crates.io است.

cargo-locate-project(1)
    چاپ مکان فایل Cargo.toml در قالب خروجی JSON.

cargo-metadata(1)
    چاپ خروجی وابستگی‌های حل‌شده بسته در قالبی خوانا برای ماشین.

cargo-pkgid(1)
    چاپ شناسه کامل و دقیق مشخصات بسته.

cargo-remove(1)
    حذف وابستگی‌ها از فایل مانیفست Cargo.toml.

cargo-tree(1)
    نمایش ساختار درختی گراف وابستگی‌ها.

cargo-update(1)
    به‌روزرسانی وابستگی‌های ثبت‌شده در فایل قفل محلی.

cargo-vendor(1)
    کپی و ذخیره محلی تمامی وابستگی‌ها در پروژه.

cargo-init(1)
    ایجاد یک بسته جدید Cargo در دایرکتوری موجود.

cargo-install(1)
    بیلد و نصب یک باینری Rust روی سیستم.

cargo-new(1)
    ایجاد یک بسته جدید Cargo در یک دایرکتوری تازه.

cargo-search(1)
    جستجوی بسته‌ها در crates.io.

cargo-uninstall(1)
    حذف یک باینری Rust از سیستم.

cargo-login(1)
    ذخیره محلی توکن API رجیستری.

cargo-logout(1)
    حذف محلی توکن API رجیستری.

cargo-owner(1)
    مدیریت مالکان یک کریت در رجیستری.

cargo-package(1)
    بسته‌بندی بسته محلی در قالب یک فایل tarball قابل توزیع.

cargo-publish(1)
    آپلود و انتشار یک بسته در رجیستری.

cargo-yank(1)
    خارج کردن یک نسخه کریت از ایندکس رجیستری.

cargo-report(1)
    تولید و نمایش انواع مختلف گزارش‌ها.

cargo-report-future-incompatibilities(1)
    گزارش کریت‌هایی که ممکن است در آینده کامپایل نشوند.

cargo-help(1)
    نمایش اطلاعات راهنمای مربوط به Cargo.

cargo-version(1)
    نمایش اطلاعات نسخه.

-V, --version

چاپ اطلاعات نسخه و خروج. اگر همراه با --verbose استفاده شود، اطلاعات بیشتری را چاپ می‌کند.

--list

فهرست کردن تمامی زیردستورهای نصب‌شده برای Cargo. در صورت استفاده با --verbose، اطلاعات بیشتری نمایش داده می‌شود.

--explain کد

اجرای دستور rustc --explain CODE که توضیح مفصلی درباره یک پیام خطا (برای نمونه E0004) چاپ می‌کند.

-v, --verbose

استفاده از خروجی با جزئیات بیشتر. می‌توان دو بار مشخص کرد تا خروجی بسیار پرجزئیات فعال شود که شامل مواردی مانند هشدارهای وابستگی‌ها و خروجی اسکریپت ساخت است. همچنین می‌توان با مقدار پیکربندی term.verbose در https://doc.rust-lang.org/cargo/reference/config.html تنظیم کرد.

-q, --quiet

عدم چاپ پیام‌های لاگ cargo. همچنین می‌توان با مقدار پیکربندی term.quiet در https://doc.rust-lang.org/cargo/reference/config.html تنظیم کرد.

--color زمان

کنترل زمان استفاده از خروجی رنگی. مقادیر معتبر:
•auto (پیش‌فرض): تشخیص خودکار پشتیبانی ترمینال از رنگ.
•always: نمایش همیشگی رنگ‌ها.
•never: عدم استفاده از رنگ در خروجی.

همچنین می‌توان با مقدار پیکربندی term.color در https://doc.rust-lang.org/cargo/reference/config.html تنظیم کرد.

--locked

تضمین می‌کند که دقیقاً از همان وابستگی‌ها و نسخه‌های زمان تولید اولیه فایل Cargo.lock استفاده شود. در صورت بروز هر یک از شرایط زیر، Cargo با خطا متوقف می‌شود:
•فایل قفل (lock file) وجود نداشته باشد.
•برنامه Cargo به دلیل تغییر در حل وابستگی‌ها، تلاش کند فایل قفل را تغییر دهد.

می‌توان از این گزینه در محیط‌هایی استفاده کرد که نیاز به ساخت‌های قطعی و تکرارپذیر دارند، مانند خط لوله‌های یکپارچه‌سازی مداوم (CI).

--offline

جلوگیری از دسترسی Cargo به شبکه به هر دلیلی. بدون این فلگ، در صورت نیاز به دسترسی به شبکه و عدم اتصال، برنامه با خطا متوقف می‌شود. با این فلگ، Cargo در صورت امکان تلاش می‌کند بدون شبکه به کار خود ادامه دهد.

توجه داشته باشید که این ممکن است به حل وابستگی متفاوتی نسبت به حالت آنلاین منجر شود. Cargo خود را به بسته‌هایی محدود می‌کند که به صورت محلی دانلود شده‌اند، حتی اگر نسخه جدیدتری در رونوشت محلی ایندکس وجود داشته باشد. برای دانلود وابستگی‌ها قبل از رفتن به حالت آفلاین، به دستور cargo-fetch(1) مراجعه کنید.

همچنین می‌توان با مقدار پیکربندی net.offline در https://doc.rust-lang.org/cargo/reference/config.html تنظیم کرد.

--frozen

معادل مشخص کردن همزمان هر دو گزینه --locked و --offline.

+toolchain

اگر Cargo با rustup نصب شده باشد و نخستین آرگومان cargo با + آغاز شود، به عنوان نام زنجیره ابزار rustup (مانند +stable یا +nightly) تفسیر خواهد شد. برای اطلاعات بیشتر در مورد نحوه عملکرد بازنویسی زنجیره ابزار به مستندات rustup در https://rust-lang.github.io/rustup/overrides.html مراجعه کنید.

--config KEY=VALUE یا PATH

بازنویسی مقدار پیکربندی Cargo. آرگومان باید در قالب ساختار TOML به صورت KEY=VALUE یا مسیر فایل پیکربندی اضافی باشد. این گزینه می‌تواند چندین بار مشخص شود. برای اطلاعات بیشتر به بخش بازنویسی‌های خط فرمان در https://doc.rust-lang.org/cargo/reference/config.html#command-line-overrides مراجعه فرمایید.

-C PATH

تغییر دایرکتوری کاری جاری قبل از اجرای هرگونه عملیات مشخص‌شده. این گزینه بر مواردی چون مکان پیش‌فرضی که cargo برای مانیفست پروژه (Cargo.toml) جستجو می‌کند و همچنین دایرکتوری‌های بررسی‌شده برای یافتن .cargo/config.toml تأثیر می‌گذارد. این گزینه باید قبل از نام دستور درج شود، برای نمونه: cargo -C path/to/my-project build.

این گزینه فقط در کانال nightly در https://doc.rust-lang.org/book/appendix-07-nightly-rust.html در دسترس است و برای فعال‌سازی نیاز به فلگ -Z unstable-options دارد (مسئله #10098 در https://github.com/rust-lang/cargo/issues/10098 را ببینید).

-h, --help

چاپ اطلاعات راهنما.

-Z flag

فلگ‌های ناپایدار (مخصوص نسخه nightly) برای Cargo. برای جزئیات دستور cargo -Z help را اجرا کنید.

برای جزئیات متغیرهای محیطی که Cargo می‌خواند به مرجع مستندات در https://doc.rust-lang.org/cargo/reference/environment-variables.html مراجعه کنید.

•0: اجرای Cargo با موفقیت انجام شد.
•101: اجرای Cargo با خطا مواجه شد.

~/.cargo/
    مکان پیش‌فرض برای دایرکتوری اصلی (home) برنامه Cargo که فایل‌های گوناگون را در آن ذخیره می‌کند. این مکان را می‌توان با متغیر محیطی CARGO_HOME تغییر داد.

$CARGO_HOME/bin/
    فایل‌های باینری نصب‌شده توسط cargo-install(1) در اینجا قرار می‌گیرند. در صورت استفاده از rustup https://rust-lang.github.io/rustup، فایل‌های اجرایی توزیع‌شده به همراه Rust نیز در این مسیر جای می‌گیرند.

$CARGO_HOME/config.toml
    فایل پیکربندی سراسری. برای اطلاعات بیشتر در مورد فایل‌های پیکربندی به مرجع مستندات در https://doc.rust-lang.org/cargo/reference/config.html مراجعه کنید.

.cargo/config.toml
    برنامه Cargo به طور خودکار به دنبال فایلی به نام .cargo/config.toml در دایرکتوری جاری و تمامی دایرکتوری‌های والد می‌گردد. این فایل‌های پیکربندی با فایل پیکربندی سراسری ادغام خواهند شد.

$CARGO_HOME/credentials.toml
    اطلاعات محرمانه احراز هویت برای ورود به یک رجیستری.

$CARGO_HOME/registry/
    این دایرکتوری شامل فایل‌های دانلودشده کش از ایندکس رجیستری و تمام وابستگی‌های دانلودشده است.

$CARGO_HOME/git/
    این دایرکتوری شامل موارد دانلودشده کش از وابستگی‌های git است.

لطفاً توجه داشته باشید که ساختار داخلی دایرکتوری $CARGO_HOME هنوز تثبیت نشده است و ممکن است در آینده تغییر کند.

1.بیلد و ساخت بسته محلی و تمامی وابستگی‌های آن:
cargo build
2.بیلد و ساخت بسته با بهینه‌سازی‌ها (نسخه نهایی):
cargo build --release
3.اجرای آزمون‌ها برای یک هدف کامپایل متقاطع (Cross-compile):
cargo test --target i686-unknown-linux-gnu
4.ایجاد یک بسته جدید که یک فایل اجرایی می‌سازد:
cargo new foobar
5.ایجاد یک بسته جدید در دایرکتوری جاری:
mkdir foo && cd foo
cargo init .
6.مشاهده گزینه‌ها و نحوه استفاده از یک دستور:
cargo help clean

برای گزارش و بررسی اشکالات به https://github.com/rust-lang/cargo/issues مراجعه کنید.

rustc(1), rustdoc(1)