Преобразование строк в i32 в Rust: простые методы и примеры

Вы работаете над проектом Rust и вам нужно преобразовать строку в 32-битное целое число со знаком (i32)? Не смотрите дальше! В этой статье мы рассмотрим различные методы преобразования строки в i32в Rust, сопровождаемые простыми для понимания примерами кода. Итак, приступим!

Метод 1. Использование функции parse

Один из самых простых способов преобразования строки в i32в Rust — использование функции parse. Функция parseпытается преобразовать строку в указанный тип. Вот как вы можете его использовать:

fn main() {
    let number_str = "42";
    let number: i32 = number_str.parse().expect("Failed to parse");
    println!("The parsed number is: {}", number);
}

В приведенном выше коде мы начинаем со строкового представления числа, в данном случае «42». Затем мы вызываем функцию parseдля строки и явно указываем целевой тип как i32. Если анализ прошел успешно, проанализированное значение присваивается переменной number.

Метод 2. Использование функции from_str

Другой подход — использовать функцию from_str, предоставляемую признаком FromStr. Этот метод позволяет более изящно обрабатывать ошибки синтаксического анализа, возвращая тип Result. Вот пример:

use std::str::FromStr;
fn main() {
    let number_str = "42";
    let number = i32::from_str(number_str).expect("Failed to parse");
    println!("The parsed number is: {}", number);
}

В этом фрагменте кода мы импортируем признак FromStrиз модуля std::str. Затем мы вызываем функцию from_strдля типа i32, передавая числовую строку в качестве аргумента. Если синтаксический анализ успешен, проанализированное значение возвращается как Result, которое мы можем обработать с помощью метода expect.

Метод 3: использование метода unwrapдля i32

Если вы предпочитаете более короткий и лаконичный подход, вы можете напрямую использовать метод unwrap, предоставляемый типом i32. Вот как это выглядит:

fn main() {
    let number_str = "42";
    let number = number_str.parse::<i32>().unwrap();
    println!("The parsed number is: {}", number);
}

В этом фрагменте кода мы вызываем функцию parseдля строки, указывая целевой тип как i32. Затем мы напрямую подключаем метод unwrapдля получения проанализированного значения. Однако обратите внимание, что использование unwrapможет привести к панике во время выполнения, если синтаксический анализ завершится неудачей. Поэтому используйте его с осторожностью.

Метод 4. Использование метода unwrap_or

Если вы хотите предоставить значение по умолчанию в случае сбоя анализа, вы можете использовать метод unwrap_or. Вот пример:

fn main() {
    let number_str = "42";
    let default_value = -1;
    let number = number_str.parse::<i32>().unwrap_or(default_value);
    println!("The parsed number is: {}", number);
}

В этом фрагменте кода мы указываем значение по умолчанию -1для метода unwrap_or. Если анализ не удался, переменной numberприсваивается значение по умолчанию.

Метод 5. Использование метода unwrap_or_else

Подобно предыдущему методу, метод unwrap_or_elseпозволяет указать замыкание, генерирующее значение по умолчанию. Вот пример:

fn main() {
    let number_str = "42";
    let number = number_str.parse::<i32>().unwrap_or_else(|_| {
        println!("Failed to parse, using default value");
        -1
    });
    println!("The parsed number is: {}", number);
}

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

Заключение

В этой статье мы рассмотрели несколько методов преобразования строки в i32в Rust. Мы рассмотрели использование функции parse, функции from_strи различных методов, предоставляемых типом i32. Не забывайте обрабатывать ошибки синтаксического анализа соответствующим образом в соответствии с вашими требованиями.

Используя эти методы, вы можете легко преобразовать строки в i32и включить их в свои проекты Rust. Приятного кодирования!