Menu
CoddyTech

Парсинг строк в числа

Часть раздела Логика и управление потоком путешествия по Rust на Coddy. Урок 47 из 66.

Один из наиболее распространённых примеров применения Result в реальных задачах — преобразование строк в числа. В Rust это делается с помощью метода .parse(), который отлично показывает, зачем нужен Result: преобразование может завершиться неудачей.

Метод .parse() пытается преобразовать строку в число, но не каждая строка представляет собой допустимое число. Например, «42» можно преобразовать в число 42, а «hello» нельзя преобразовать ни в какое число:

let valid_number = "42";
let invalid_number = "hello";

let result1: Result = valid_number.parse();
let result2: Result = invalid_number.parse();

Если разбор проходит успешно, .parse() возвращает Ok(number), содержащий преобразованное значение. Если разбор завершается неудачей, он возвращает Err(error) с информацией о том, почему разбор не удался. Это заставляет тебя явно обрабатывать оба возможных результата, не позволяя программе аварийно завершиться при недопустимом вводе.

Вы можете обработать результат разбора любым из изученных вами способов работы с Result: использовать match для явной обработки, unwrap(), если вы уверены, что операция завершится успешно, или оператор ?, чтобы передать ошибки дальше.

challenge icon

Задание

Легко
Напиши функцию parse_to_integer, которая принимает строку input и возвращает разобранное целочисленное значение. Если строку нельзя разобрать как допустимое целое число, верни 0 в качестве значения по умолчанию.

Используй метод .parse(), чтобы преобразовать строку в i32, и корректно обработай Result, чтобы вернуть безопасное значение.

Параметры:

  • input (String): Строка, которую нужно разобрать как целое число

Возвращает: Разобранное целое число в случае успеха или 0, если разбор не удался (i32)

Попробуйте сами

fn parse_to_integer(input: String) -> i32 {
    // Напишите код здесь
}
quiz iconПроверьте себя

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

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Rust