CARGO-RUN(1) General Commands Manual CARGO-RUN(1) نام (NAME) cargo-run - اجرای باینری یا مثال بسته فعلی در پروژه‌های Rust خلاصه دستور (SYNOPSIS) cargo run [گزینه‌ها] [-- آرگومان‌ها] توضیحات (DESCRIPTION) یک فایل اجرایی (باینری) یا مثال از بسته محلی را اجرا می‌کند. تمام آرگومان‌هایی که پس از دو خط تیره (--) می‌آیند، به باینری در حال اجرا منتقل می‌شوند. اگر آرگومان‌ها را هم به Cargo و هم به برنامه باینری ارسال می‌کنید، موارد بعد از -- به باینری و موارد قبل از آن به Cargo تحویل داده می‌شوند. برخلاف cargo-test(1) و cargo-bench(1)، دستور cargo run دایرکتوری کاری فایل باینری در حال اجرا را روی دایرکتوری کاری فعلی تنظیم می‌کند؛ دقیقاً همانند زمانی که برنامه مستقیماً در شل اجرا می‌شود. گزینه‌ها (OPTIONS) انتخاب بسته (Package Selection) به‌طور پیش‌فرض، بسته موجود در دایرکتوری کاری فعلی انتخاب می‌شود. از فلگ -p می‌توان برای انتخاب بسته‌ای متفاوت در فضای کاری (workspace) استفاده کرد. -p spec, --package spec بسته‌ای که باید اجرا شود. برای آگاهی از قالب SPEC به cargo-pkgid(1) مراجعه کنید. انتخاب هدف (Target Selection) هنگامی که هیچ گزینه انتخاب هدفی مشخص نشده باشد، cargo run هدف باینری را اجرا می‌کند. اگر چندین هدف باینری وجود داشته باشد، باید با ارسال فلگ هدف یکی را انتخاب کنید. همچنین می‌توانید فیلد default-run را در بخش [package] فایل Cargo.toml مشخص کنید تا نام باینری پیش‌فرض برای اجرا تعیین شود. --bin name اجرای باینری مشخص‌شده. --example name اجرای مثال مشخص‌شده. انتخاب ویژگی‌ها (Feature Selection) فلگ‌های ویژگی به شما امکان می‌دهند فعال بودن ویژگی‌ها را کنترل کنید. اگر گزینه‌ای برای ویژگی‌ها داده نشود، ویژگی default برای هر بسته انتخاب‌شده فعال می‌شود. برای جزئیات بیشتر به مستندات ویژگی‌ها مراجعه کنید. -F features, --features features فهرستی از ویژگی‌ها برای فعال‌سازی که با فاصله یا کاما از هم جدا شده‌اند. ویژگی‌های اعضای فضای کاری را می‌توان با ساختار package-name/feature-name فعال کرد. این فلگ را می‌توان چندین بار مشخص کرد که در این صورت تمام ویژگی‌های نام‌برده فعال می‌شوند. --all-features فعال‌سازی تمام ویژگی‌های موجود در تمامی بسته‌های انتخاب‌شده. --no-default-features عدم فعال‌سازی ویژگی default در بسته‌های انتخاب‌شده. گزینه‌های کامپایل (Compilation Options) --target triple اجرا برای معماری هدف مشخص‌شده. پیش‌فرض، معماری میزبان (host) است. ساختار کلی سه‌گانه (triple) به‌صورت --- است. مقادیر ممکن: • هر هدف پشتیبانی‌شده در خروجی rustc --print target-list. • "host-tuple" که در داخل برنامه با هدف میزبان جایگزین می‌شود. این گزینه به‌ویژه زمانی مفید است که در حال کامپایل متقابل (cross- compiling) برخی از کریت‌ها هستید و نمی‌خواهید ماشین میزبان خود را صراحتاً به عنوان هدف تعیین کنید (برای مثال، یک xtask در پروژه‌ای مشترک که ممکن است روی میزبان‌های متعددی توسعه داده شود). • مسیری به یک مشخصات هدف سفارشی. برای اطلاعات بیشتر به Custom Target Lookup Path مراجعه کنید. این مورد را می‌توان از طریق مقدار پیکربندی build.target در config نیز تنظیم کرد. توجه داشته باشید که مشخص کردن این فلگ باعث می‌شود Cargo در حالت متفاوتی اجرا شود که در آن خروجی‌های هدف در دایرکتوری جداگانه‌ای قرار می‌گیرند. برای جزئیات بیشتر به مستندات build cache مراجعه کنید. -r, --release اجرای مصنوعات بهینه‌سازی‌شده با پروفایل release. همچنین گزینه --profile را برای انتخاب یک پروفایل خاص بر اساس نام ببینید. --profile name اجرا با پروفایل داده‌شده. برای اطلاعات بیشتر درباره پروفایل‌ها به مرجع مراجعه کنید. --timings نمایش اطلاعات مربوط به مدت زمان هر مرحله از کامپایل و ردیابی اطلاعات همزمانی در طول زمان. یک فایل به نام cargo-timing.html در پایان ساخت در دایرکتوری target/cargo-timings نوشته خواهد شد. در صورت تمایل به مشاهده اجرای قبلی، گزارش دیگری نیز همراه با برچسب زمان در نام فایل ذخیره می‌شود. این گزارش‌ها فقط برای مطالعه توسط انسان مناسب هستند و داده‌های زمان‌بندی ماشین‌خوان ارائه نمی‌دهند. گزینه‌های خروجی (Output Options) --target-dir directory دایرکتوری مربوط به تمامی خروجی‌های تولیدشده و فایل‌های میانی. همچنین می‌تواند با متغیر محیطی CARGO_TARGET_DIR یا مقدار پیکربندی build.target-dir در config مشخص شود. پیش‌فرض، پوشه target در ریشه فضای کاری است. گزینه‌های نمایش (Display Options) -v, --verbose استفاده از خروجی با جزئیات. می‌توان این گزینه را دو بار برای خروجی بسیار پرجزئیات مشخص کرد که شامل خروجی‌های اضافی مانند هشدارهای وابستگی و خروجی اسکریپت ساخت است. همچنین با مقدار پیکربندی term.verbose در config قابل تعیین است. -q, --quiet عدم چاپ پیام‌های لاگ cargo. همچنین با مقدار پیکربندی term.quiet در config قابل تنظیم است. --color when کنترل زمان استفاده از خروجی رنگی. مقادیر معتبر: • auto (پیش‌فرض): تشخیص خودکار پشتیبانی ترمینال از رنگ. • always: همیشه رنگ‌ها را نمایش بده. • never: هرگز رنگ‌ها را نمایش نده. همچنین با مقدار پیکربندی term.color در config قابل تنظیم است. --message-format fmt قالب خروجی پیام‌های عیب‌یابی (diagnostics). می‌تواند چندین بار مشخص شود و شامل مقادیر جداشده با کاما است. مقادیر معتبر: • human (پیش‌فرض): نمایش در قالب متنی خوانا برای انسان. با short و json تداخل دارد. • short: صدور پیام‌های متنی کوتاه‌تر و خوانا برای انسان. با human و json تداخل دارد. • json: صدور پیام‌های JSON به خروجی استاندارد (stdout). برای جزئیات بیشتر به مرجع مراجعه کنید. با human و short تداخل دارد. • json-diagnostic-short: اطمینان حاصل می‌کند که فیلد rendered در پیام‌های JSON شامل رندر کوتاه (short) از rustc باشد. با human یا short قابل استفاده نیست. • json-diagnostic-rendered-ansi: اطمینان حاصل می‌کند که فیلد rendered در پیام‌های JSON حاوی کدهای رنگی ANSI درون‌متنی جهت رعایت طرح رنگ پیش‌فرض rustc باشد. با human یا short قابل استفاده نیست. • json-render-diagnostics: به Cargo دستور می‌دهد که پیام‌های عیب‌یابی rustc را در پیام‌های JSON چاپ نکند، بلکه خود Cargo پیام‌های JSON ارائه‌شده از rustc را رندر کند. پیام‌های عیب‌یابی JSON خود Cargo و موارد دیگر همچنان صادر می‌شوند. با human یا short قابل استفاده نیست. گزینه‌های مانیفست (Manifest Options) --manifest-path path مسیر فایل Cargo.toml. به‌طور پیش‌فرض، Cargo به دنبال فایل Cargo.toml در دایرکتوری فعلی یا هر یک از دایرکتوری‌های والد می‌گردد. --ignore-rust-version نادیده گرفتن مشخصات rust-version در بسته‌ها. --locked تضمین می‌کند که دقیقاً از همان وابستگی‌ها و نسخه‌هایی استفاده شود که در زمان تولید اولیه فایل Cargo.lock ثبت شده‌اند. در صورت بروز هر یک از شرایط زیر، Cargo با خطا متوقف می‌شود: • فایل lock وجود نداشته باشد. • برنامه Cargo به دلیل تفکیک متفاوت وابستگی‌ها تلاش کند فایل lock را تغییر دهد. این گزینه می‌تواند در محیط‌هایی که بیلد‌های قطعی و تکرارپذیر مورد نیاز است، مانند خطوط لوله CI استفاده شود. --offline از دسترسی Cargo به شبکه به هر دلیلی جلوگیری می‌کند. بدون این فلگ، اگر Cargo نیاز به دسترسی به شبکه داشته باشد و شبکه در دسترس نباشد، با خطا متوقف می‌شود. با این فلگ، Cargo در صورت امکان تلاش می‌کند بدون شبکه به کار خود ادامه دهد. توجه داشته باشید که این ممکن است به تفکیک وابستگی متفاوتی نسبت به حالت آنلاین منجر شود. Cargo خود را به کریت‌هایی که به‌صورت محلی بارگیری شده‌اند محدود می‌کند، حتی اگر نسخه جدیدتری بر اساس کپی محلی فهرست موجود باشد. برای بارگیری وابستگی‌ها قبل از آفلاین شدن، دستور cargo-fetch(1) را ببینید. همچنین با مقدار پیکربندی net.offline در config قابل تعیین است. --frozen معادل مشخص کردن هم‌زمان هر دو گزینه --locked و --offline است. گزینه‌های عمومی (Common Options) +toolchain اگر Cargo با rustup نصب شده باشد و اولین آرگومان cargo با + شروع شود، به عنوان نام زنجیره ابزار (toolchain) در rustup (مانند +stable یا +nightly) تفسیر می‌شود. برای اطلاعات بیشتر درباره نحوه عملکرد بازنویسی زنجیره ابزار به مستندات rustup مراجعه کنید. --config KEY=VALUE یا PATH یک مقدار پیکربندی Cargo را بازنویسی می‌کند. آرگومان باید در ساختار نحوی TOML به‌صورت KEY=VALUE باشد یا به عنوان مسیر یک فایل پیکربندی اضافی ارائه شود. این فلگ را می‌توان چندین بار مشخص کرد. برای اطلاعات بیشتر به بخش بازنویسی‌های خط فرمان مراجعه کنید. -C PATH دایرکتوری کاری فعلی را قبل از اجرای هر عملیات مشخص‌شده تغییر می‌دهد. این مورد بر نحوه جستجوی پیش‌فرض cargo برای مانیفست پروژه (Cargo.toml) و همچنین دایرکتوری‌های جستجو برای یافتن مواردی نظیر .cargo/config.toml تأثیر می‌گذارد. این گزینه باید قبل از نام دستور بیاید؛ برای مثال: cargo -C path/to/my-project build. این گزینه فقط در کانال nightly در دسترس است و برای فعال‌سازی به فلگ -Z unstable-options نیاز دارد (به #10098 مراجعه کنید). -h, --help چاپ اطلاعات راهنما. -Z flag فلگ‌های ناپایدار (مخصوص نسخه nightly) برای Cargo. برای جزئیات، دستور cargo -Z help را اجرا کنید. سایر گزینه‌ها (Miscellaneous Options) -j N, --jobs N تعداد وظایف موازی برای اجرا. همچنین می‌تواند با مقدار پیکربندی build.jobs در config مشخص شود. پیش‌فرض، تعداد پردازنده‌های منطقی است. اگر عدد منفی باشد، حداکثر تعداد وظایف موازی را روی تعداد پردازنده‌های منطقی به‌علاوه مقدار ارائه‌شده تنظیم می‌کند. اگر رشته default داده شود، مقدار را به حالت پیش‌فرض بازمی‌گرداند. نباید 0 باشد. --keep-going کامپایل بیشترین تعداد ممکن از کریت‌ها در گراف وابستگی، به جای متوقف کردن ساخت با بروز اولین خطا در کامپایل. برای مثال اگر بسته فعلی به دو وابستگی fails و works وابسته باشد که ساخت یکی از آن‌ها با شکست مواجه می‌شود، cargo run -j1 ممکن است موردی را که با موفقیت ساخته می‌شود بسازد یا نسازد (بسته به این که Cargo ساخت کدام‌یک را ابتدا انتخاب کرده است)، در حالی که cargo run -j1 --keep-going قطعاً هر دو را اجرا خواهد کرد، حتی اگر موردی که اول اجرا شده شکست بخورد. محیط (ENVIRONMENT) برای جزئیات بیشتر درباره متغیرهای محیطی که Cargo می‌خواند، به مرجع مراجعه کنید. وضعیت خروج (EXIT STATUS) • 0: اجرای Cargo با موفقیت انجام شد. • 101: اجرای Cargo با خطا مواجه شد. مثال‌ها (EXAMPLES) 1. ساخت بسته محلی و اجرای هدف باینری اصلی آن (با فرض وجود تنها یک باینری): cargo run 2. اجرای یک مثال با آرگومان‌های اضافی: cargo run --example exname -- --exoption exarg1 exarg2 همچنین ببینید (SEE ALSO) cargo(1), cargo-build(1) CARGO-RUN(1)