چرا از این فرمتکننده راست استفاده کنیم
- فرمتبندی با سبک rustfmt برای کد راست ایدیوماتیک
- اندازه تورفتگی قابل تنظیم و حداکثر عرض خط (ستون پیچش)
- فرمتبندی idempotent – فرمتبندی مجدد همان فایل نتیجه یکسان میدهد
- تغییرات فقط در چیدمان: تورفتگی، فاصلهگذاری و شکست خط، نه منطق
- عالی کار میکند با فایلهای مستقل `.rs` و ماژولهای کرت
- کد از طریق بکاند فرمتبندی امن پردازش میشود – بدون اشتراکگذاری عمومی یا ایندکس کردن
- رابط کاربری واکنشگرا که با تمهای تاریک/روشن ویرایشگر به خوبی کار میکند
🛠️ نحوه فرمت کردن کد Rust به صورت آنلاین for rust-formatter
1. کد Rust خود را پیست یا آپلود کنید
📥 کد Rust خود را در ویرایشگر پیست کنید یا یک فایل `.rs` را از پروژه خود بکشید و رها کنید. ابزار نحو Rust را تشخیص داده و برای بازرسی آسان تر آن را برجسته میکند.
2. تورفتگی و طول خط را تنظیم کنید
📏 از پنل گزینهها برای انتخاب **اندازه تورفتگی** (مثلاً ۲ یا ۴ فاصله) و **طول خط بستهبندی** (برای زنجیرههای طولانی یا عبارات پیچیده) استفاده کنید. اگر ترجیح میدهید عرض خطوط موجود حفظ شود، بستهبندی را روی `0` تنظیم کنید.
3. روی "فرمت" کلیک کنید
🚀 دکمه **فرمت** را بزنید. کد شما به یک فرمتکننده سبک rustfmt ارسال میشود که تورفتگی، فاصلهها، خطوط خالی و بستهبندی را بدون تغییر رفتار نرمال میکند.
4. بررسی، کپی یا دانلود
📤 قبل/بعد را مقایسه کنید، سپس کد فرمت شده را به ویرایشگر خود برگردانید یا نتیجه را به عنوان یک فایل `.rs` دانلود کنید. آماده برای `cargo build`، `cargo test` و بررسی کد.
مشخصات فنی
موتور فرمتدهی و سبک
فرمتکننده از فرمتدهی سبک rustfmt و نظرگرا پیروی میکند، بنابراین کد شما در بین فایلها و مشارکتکنندگان شبیه Rust اصیل به نظر میرسد.
| جنبه | رفتار | یادداشتها |
|---|---|---|
| تورفتگی | قابل پیکربندی، معمولاً ۲–۴ فاصله در هر سطح | تبها به فاصله نرمال میشوند تا با سبک رایج Rust در بسیاری از پروژهها مطابقت داشته باشند. |
| آکولادها و بلوکها | جایگذاری و تورفتگی یکنواخت برای `fn`، `impl`، `match`، `if`، `loop`… | به خوانایی کنترل جریان تو در تو و عبارات match کمک میکند. |
| فاصلهگذاری | فاصلههای اضافی اطراف عملگرها و علائم نگارشی را پاک میکند | فاصلهگذاری `let`، `match`، closureها و genericها را استاندارد میکند. |
| خطوط خالی | بین آیتمها (توابع، ساختارها، بلوکهای impl) نرمال شده | جداسازی بصری ماژولها و سطوح API را بهبود میبخشد. |
| همتوانی | ورودی یکسان → خروجی یکسان وقتی قبلاً فرمت شده باشد | اجرای مجدد فرمتر همیشه ایمن و پایدار است. |
اندازه تورفتگی و شکستن خط
میتوانید عرض تورفتگی و شکستن خط را متناسب با قراردادهای تیم خود تنظیم کنید.
| تنظیم | محدوده مقدار | اثر |
|---|---|---|
| indentSize | ۱–۸ فاصله | میزان تورفتگی هر بلوک تودرتو را کنترل میکند. |
| wrapLineLength = 0 | بدون شکستن خط بر اساس طول | عرض خط فعلی شما را حفظ میکند (برای اصلاحات سریع مفید است). |
| wrapLineLength = 80–100 | ترجیحات معمول تیم Rust | کد را فشرده نگه میدارد در حالی که خوانایی بالایی دارد. |
| wrapLineLength = 101–120 | چیدمان بازتر | برای مانیتورهای فوق عریض یا کدهای اکتشافی مناسب است. |
ورودیهای پشتیبانی شده و محدودیتها
ساخته شده برای گردش کارهای روزمره توسعه Rust.
| پارامتر | محدودیت / رفتار | یادداشتها |
|---|---|---|
| پسوند فایل | .rs | فایلهای منبع برای crateها، باینریها، ماژولها و مثالها. |
| انواع MIME | text/x-rustsrc | برای هایلایت سینتکس و حالت ویرایشگر به صورت داخلی استفاده میشود. |
| حداکثر اندازه ورودی | ≈ ۲ مگابایت کد منبع Rust | فایلهای بسیار بزرگ یا تولید شده بهتر است از طریق `cargo fmt` روی دستگاه شما پردازش شوند. |
| رمزگذاری | UTF-8 توصیه میشود | ورودیهای غیر UTF-8 باید قبل از فرمت شدن تبدیل شوند. |
اجرا و ایمنی
فرمتدهی در یک بکاند امن با استفاده از یک فرمتر آگاه از Rust اجرا میشود.
| جنبه | رفتار | یادداشتها |
|---|---|---|
| انتقال | درخواستهای HTTPS به API قالببندی | کد شما به صورت امن ارسال میشود و به صورت عمومی در معرض دید قرار نمیگیرد. |
| مهلت زمانی | ~۲۵ ثانیه برای هر درخواست | از اجرای بیوقفه کارها روی ورودیهای شدید یا نادرست جلوگیری میکند. |
| معناشناسی | تبدیلهای فقط مربوط به چیدمان | منطق شما ثابت میماند؛ فقط فاصلهها و چیدمان تغییر میکنند. |
نمونههای CLI rustfmt & cargo fmt
میخواهید همان سبک را مستقیماً در ویرایشگر، CI یا ترمینال خود داشته باشید؟ از `rustfmt` یا `cargo fmt` به صورت محلی استفاده کنید:
چندسکویی (از طریق زنجیره ابزار Rust)
قالببندی کل کرت
cargo fmtrustfmt را روی تمام فایلهای `.rs` در کرت شما مطابق با `rustfmt.toml` اجرا میکند.
قالببندی یک فایل واحد
rustfmt src/main.rsقوانین rustfmt را روی یک فایل به صورت درجا اعمال میکند.
استفاده از حداکثر عرض سفارشی
rustfmt --config max_width=100 src/lib.rsستون پیشفرض پیچیدن را نادیده میگیرد (مشابه طول خط پیچیدن این ابزار).
موارد استفاده رایج برای قالببند Rust
توسعه کرت و کتابخانه
کرتهای عمومی، کتابخانههای داخلی و میکروسرویسهای خود را تمیز و یکنواخت نگه دارید.
- نرمالسازی قالببندی قبل از انتشار در crates.io.
- یکنواخت کردن بصری مشارکتهای چندین توسعهدهنده.
- اجرای بازآراییهای بزرگ و سپس قالببندی خودکار برای پاکسازی چیدمان.
pub fn add(a: i32,b:i32)->i32{a+b}
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
ابزارهای CLI و اتوماسیون
ابزارهای CLI مختصر و قابل نگهداری، اسکریپتها و ابزارهای توسعه را قالببندی کنید.
- قابل خواندن نگه داشتن بلوکهای تجزیه آرگومان و مدیریت خطا.
- پاکسازی زنجیرههای طولانی `match` و مدیریت گزینهها.
- اطمینان از اینکه ابزارهای داخلی با گذشت زمان به راحتی قابل گسترش باقی میمانند.
یادگیری و آموزش Rust
Rust ایدئوماتیک را بدون بحثهای بیثمر درباره سبک به دانشآموزان نشان دهید.
- قالببندی مثالها قبل از اشتراکگذاری در اسلایدها یا آموزشها.
- مقایسه کدهای نامرتب و قالببندی شده Rust برای آموزش بهترین روشها.
- قالببندی خودکار ارسالهای دانشآموزان قبل از بررسی منطق.
fn fibonacci(n:u32)->u32{if n<2{n}else{fibonacci(n-1)+fibonacci(n-2)}}
fn fibonacci(n: u32) -> u32 {
if n < 2 {
n
} else {
fibonacci(n - 1) + fibonacci(n - 2)
}
}
❓ Frequently Asked Questions
❓آیا این قالببند Rust رفتار کد من را تغییر میدهد؟
📏چگونه باید طول خط را انتخاب کنم؟
🧹آیا قالببند فضاهای خالی انتهایی را حذف میکند؟
🔒آیا قالببندی کد Rust تولیدی در اینجا امن است؟
⚙️این ابزار چگونه به rustfmt و cargo fmt مرتبط است؟
Pro Tips
یک `rustfmt.toml` در ریشه crate خود اضافه کنید تا `cargo fmt` محلی و این قالببند آنلاین در عرض و فاصلهگذاری هماهنگ بمانند.
این ابزار را با یک کار CI که `cargo fmt -- --check` را اجرا میکند ترکیب کنید تا از ورود کدهای قالببندی نشده به شاخه اصلی جلوگیری کنید.
قبل از بازآراییهای بزرگ، یک commit (یا PR) اختصاصی برای قالببندی اجرا کنید تا diffهای آینده بر تغییرات منطقی واقعی متمرکز شوند.
برای آموزش و مستندسازی از طول خطوط کوتاهتر (90-80) استفاده کنید؛ در ابزارهای داخلی اگر تیم شما ترجیح میدهد کمی پهنتر بروید.
Additional Resources
Other Tools
- زیباکننده CSS
- زیباکننده HTML
- زیباکننده JavaScript
- زیباکننده PHP
- انتخابگر رنگ
- استخراجکننده اسپرایت
- دیکودر Base64
- انکودر Base64
- فرمتدهنده C#
- فرمتدهنده CSV
- Dockerfile Formatter
- فرمتدهنده Elm
- فرمتدهنده ENV
- فرمتدهنده Go
- فرمتدهنده GraphQL
- فرمتدهنده HCL
- فرمتدهنده INI
- فرمتدهنده JSON
- فرمتدهنده LaTeX
- فرمتدهنده Markdown
- فرمتدهنده Objective-C
- Php Formatter
- فرمتدهنده Proto
- فرمتدهنده Python
- فرمتدهنده Ruby
- فرمتدهنده Scala
- فرمتدهنده اسکریپت شل
- فرمتدهنده SQL
- قالببندی SVG
- قالببندی Swift
- قالببندی TOML
- Typescript Formatter
- قالببندی XML
- قالببندی YAML
- قالببندی Yarn
- کوچککننده CSS
- Html Minifier
- Javascript Minifier
- کوچککننده JSON
- کوچککننده XML
- نمایشگر هدرهای HTTP
- PDF به متن
- تستکننده Regex
- بررسیکننده رتبه SERP
- جستجوی Whois