Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Додаток D: Корисні інструменти розробки

У цьому додатку ми говоримо про деякі корисні інструменти розробки, які надає проєкт Rust. Ми розглянемо автоматичне форматування, швидкі способи застосування виправлень до попереджень, лінтер і інтеграцію з IDE.

Автоматичне форматування за допомогою rustfmt

Інструмент rustfmt переформатовує ваш код відповідно до стилю коду спільноти. Багато спільних проєктів використовують rustfmt, щоб запобігти суперечкам про те, який стиль використовувати під час написання Rust: кожен форматує свій код за допомогою цього інструмента.

Встановлення Rust за замовчуванням включають rustfmt, тож у вашій системі вже мають бути програми rustfmt і cargo-fmt. Ці дві команди є аналогами rustc і cargo у тому сенсі, що rustfmt дає тонкіший контроль, а cargo-fmt розуміє домовленості проєкту, який використовує Cargo. Щоб відформатувати будь-який проєкт Cargo, введіть таке:

$ cargo fmt

Запуск цієї команди переформатовує весь код Rust у поточному крейті. Це має змінювати лише стиль коду, а не семантику коду. Докладніше про rustfmt дивіться в його документації.

Виправляйте свій код за допомогою rustfix

Інструмент rustfix входить до складу встановлень Rust і може автоматично виправляти попередження компілятора, для яких є чіткий спосіб виправлення проблеми, імовірно саме той, який вам потрібен. Ви, мабуть, уже бачили попередження компілятора раніше. Наприклад, розгляньте цей код:

Filename: src/main.rs

fn main() {
    let mut x = 42;
    println!("{x}");
}

Тут ми визначаємо змінну x як змінну, але насправді ніколи її не змінюємо. Rust попереджає нас про це:

$ cargo build
   Compiling myprogram v0.1.0 (file:///projects/myprogram)
warning: variable does not need to be mutable
 --> src/main.rs:2:9
  |
2 |     let mut x = 0;
  |         ----^
  |         |
  |         help: remove this `mut`
  |
  = note: `#[warn(unused_mut)]` on by default

Попередження пропонує нам прибрати ключове слово mut. Ми можемо автоматично застосувати цю пропозицію за допомогою інструмента rustfix, виконавши команду cargo fix:

$ cargo fix
    Checking myprogram v0.1.0 (file:///projects/myprogram)
      Fixing src/main.rs (1 fix)
    Finished dev [unoptimized + debuginfo] target(s) in 0.59s

Коли ми знову подивимося на src/main.rs, побачимо, що cargo fix змінив код:

Filename: src/main.rs

fn main() {
    let x = 42;
    println!("{x}");
}

Змінна x тепер незмінна, і попередження більше не з’являється.

Ви також можете використовувати команду cargo fix, щоб перевести свій код між різними виданнями Rust. Видання розглядаються в Додатку E.

Більше лінтів із Clippy

Інструмент Clippy — це набір лінтів для аналізу вашого коду, щоб ви могли виявляти поширені помилки та покращувати свій код Rust. Clippy входить до стандартних встановлень Rust.

Щоб запустити лінти Clippy для будь-якого проєкту Cargo, введіть таке:

$ cargo clippy

Наприклад, припустімо, ви пишете програму, яка використовує наближення математичної константи, такої як пі, як це робить ця програма:

fn main() {
    let x = 3.1415;
    let r = 8.0;
    println!("the area of the circle is {}", x * r * r);
}

Запуск cargo clippy для цього проєкту призводить до такої помилки:

error: approximate value of `f{32, 64}::consts::PI` found
 --> src/main.rs:2:13
  |
2 |     let x = 3.1415;
  |             ^^^^^^
  |
  = note: `#[deny(clippy::approx_constant)]` on by default
  = help: consider using the constant directly
  = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant

Ця помилка повідомляє вам, що Rust уже має визначену точнішу константу PI, і що ваша програма була б правильнішою, якби ви використовували цю константу замість неї. Після цього ви змінили б свій код, щоб використовувати константу PI.

Наступний код не призводить до жодних помилок або попереджень від Clippy:

fn main() {
    let x = std::f64::consts::PI;
    let r = 8.0;
    println!("the area of the circle is {}", x * r * r);
}

Докладніше про Clippy дивіться в його документації.

Інтеграція з IDE за допомогою rust-analyzer

Щоб допомогти з інтеграцією з IDE, спільнота Rust рекомендує використовувати rust-analyzer. Цей інструмент — це набір утиліт, орієнтованих на компілятор, які розмовляють за допомогою Language Server Protocol, тобто специфікації для того, щоб IDE і мови програмування обмінювалися між собою. Різні клієнти можуть використовувати rust-analyzer, наприклад плагін Rust analyzer для Visual Studio Code.

Відвідайте домашню сторінку проєкту rust-analyzer для інструкцій зі встановлення, а потім установіть підтримку language server у вашій конкретній IDE. Ваша IDE отримає можливості, такі як автодоповнення, перехід до визначення та вбудовані помилки.