Перейти к основному содержимому
  1. Rust/

Разбираемся с ошибками в Rust

·768 слов·4 минуты· loading · loading · · ·Rust-basic
О Rust - Эта статья часть цикла.
Статей прочитано 0/38
0%
📚 Введение и дополнительные материалы
🟢 Начальный уровень (Rust-basic)
22 Разбираемся с ошибками в Rust (текущая)
Не прочитана
Не прочитана
🔵 Средний уровень (Rust-middle)

Ошибки - неотъемлемая часть жизни любого разработчика. В этой статье мы поговорим о том как получить больше информации о специфических ошибках в Rust.

Код ошибки и помощь компилятора
#

Когда компилятор Rust отображает ошибку, он также предоставляет код ошибки. Например может возникнуть такая:

For more information about this error, try 'rustc --explain E0425'

Компилятор предлагает использовать команду rustc --explain с кодом ошибки для того чтобы увидеть больше информации об этой ошибке.

rustc - это команда запуска Rust компилятора. Вы можете использовать также команду cargo вместо неё

Давайте попробуем запустить эту команду в терминале. Вывод будет таким:

An unresolved name was used.

Erroneous code examples:

something_that_doesnt_exist::foo; // error: unresolved name something_that_doesnt_exist::foo

// or:

trait Foo { fn bar() { Self; // error: unresolved name Self } }

// or:

let x = unknown_variable; // error: unresolved name unknown_variable

Please verify that the name wasn't misspelled and ensure that the identifier being referred to is valid for the given situation...

В результате мы получаем подробную документацию по этой ошибке с примерами и предложениями по исправлению. Удобно, что вся информация доступна в терминале и нам не нужно покидать среду разработки.

Для наглядности давайте посмотрим на интерактивный пример этой ошибки и её исправления:

Пример ошибки E0425 (Неразрешенное имя)
Шаг 1/2
1// ?compile_fail
2fn main() {
3    let message = "Привет, Rust!";
4    // Опечатка в имени переменной: messg вместо message
5    println!("{}", messg);
6}

Ошибка E0425: Использование неизвестного имени

  • Компилятор Rust прерывает сборку, поскольку имя messg не объявлено в данной области видимости.
  • Обратите внимание на помощь компилятора: он автоматически ищет похожие переменные и предлагает исправить опечатку.

Еще один частый гость: Ошибка E0308 (Несоответствие типов)
#

Другой популярной ошибкой, с которой часто сталкиваются новички, является несоответствие типов (E0308). Rust — язык со строгой статической типизацией. Он не выполняет неявные преобразования за вас (например, он не превратит число с плавающей точкой в целое число автоматически).

Давайте посмотрим на интерактивном слайде, как выглядит эта ошибка и как её исправить:

Пример ошибки E0308 (Несоответствие типов)
Шаг 1/2
1// ?compile_fail
2fn main() {
3    // В Rust строгая типизация. Мы не можем присвоить число с плавающей точкой
4    // переменной, которая ожидает целое число без явного приведения.
5    let speed: i32 = 12.5; 
6    println!("Скорость: {}", speed);
7}

Ошибка E0308: Несоответствие типов (Mismatched Types)

  • Мы указали тип i32 (целое число), но присвоили значение 12.5 (с плавающей точкой).
  • Rust не выполняет неявных преобразований типов, чтобы уберечь вас от потери данных или точности.

Альтернативные варианты
#

Хотя поиск ответа через GPT/ИИ может казаться быстрым решением, важно быть осторожным и не полагаться на нейронные сети, которые могут галлюцинировать. Использование rustc --explain в сочетании со справочными материалами — гораздо более надёжный и глубокий способ обучения.

Онлайн-ресурсы
#

Если вы перейдете по ссылке Rust Code Errors, то увидите перечень всех кодов возможных ошибок. Кроме того, на сайте вы можете запустить пример кода и увидеть вывод компилятора для конкретной ошибки.

Советы для начинающих
#

Чтобы действительно научиться работать с ошибками, не стоит просто исправлять их и двигаться дальше. Вместо этого, на первых порах, следуйте простому алгоритму:

  1. Исправьте ошибку.
  2. Напишите маленькую программу, которая позволит воспроизвести ту же ошибку компилятора.
  3. Подумайте еще раз об этой ошибке и попробуйте объяснить себе, почему она произошла и как принято её решать.
  4. Погуглите и поищите помощи на ресурсах и в сообществах, если всё ещё не до конца разобрались.

Следуя этому алгоритму, вы не только исправите ошибку, но и получите более глубокое понимание языка.

Вывод
#

Теперь, когда у вас возникнет ошибка компиляции, вы знаете, где можно найти помощь, не покидая среду разработки. Компилятор Rust — ваш надежный и верный помощник.

В последующих статьях нам ещё не раз предстоит столкнуться с ошибками компилятора, но вы уже вооружены отличным инструментом для их расшифровки и исправления.


Проверь свои знания!
#

Пройдите короткий интерактивный тест, чтобы закрепить понимание работы с ошибками компилятора в Rust.

История обновлений

  • Добавил раздел про кастомные типы ошибок и использование макроса panic!.
Статья прочитана
Пожалуйста, оцените насколько статья была вам полезна и понятна
Цикл статей
О Rust - Эта статья часть цикла.
Статей прочитано 0/38
0%
📚 Введение и дополнительные материалы
🟢 Начальный уровень (Rust-basic)
22 Разбираемся с ошибками в Rust (текущая)
Не прочитана
Не прочитана
🔵 Средний уровень (Rust-middle)

Связанные статьи