Rust: преобразование строк в целые числа – подробное руководство

Преобразование строк в целые числа — обычная задача в программировании, и Rust предоставляет несколько методов для достижения этой цели. В этой статье блога мы рассмотрим различные подходы к анализу целого числа из строки с помощью Rust. Мы углубимся в примеры кода и объясним каждый метод в разговорной форме, чтобы его было легко понять и реализовать как начинающим, так и опытным разработчикам. Итак, начнем!

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

fn main() {
    let number_str = "42";
    let number: i32 = number_str.parse().unwrap();
    println!("Parsed integer: {}", number);
}

Метод 2: from_str()
Метод from_str()является альтернативой parse(). Он работает аналогично, но обеспечивает большую гибкость, позволяя указать тип целого числа, которое вы хотите проанализировать.

fn main() {
    use std::str::FromStr;

    let number_str = "42";
    let number = i32::from_str(number_str).unwrap();
    println!("Parsed integer: {}", number);
}

Метод 3: atoi() из крейта atoi
Функция atoi()из крейта atoiпредоставляет другой способ анализа целых чисел из строк в Rust. Этот метод может обрабатывать более сложные сценарии, такие как анализ целых чисел с начальными и конечными пробелами.

Сначала добавьте ящик atoiв файл Cargo.toml:

[dependencies]
atoi = "0.4.3"

Затем вы можете использовать функцию atoi()следующим образом:

fn main() {
    use atoi::atoi;

    let number_str = "42";
    let number = atoi::<i32>(number_str).unwrap();
    println!("Parsed integer: {}", number);
}

Метод 4: вариант match и Ok()
Если вы предпочитаете более явный подход, вы можете использовать сопоставление с образцом с вариантом Ok()для явной обработки преобразования.

fn main() {
    let number_str = "42";
    let number = match number_str.parse::<i32>() {
        Ok(parsed_num) => parsed_num,
        Err(_) => {
            println!("Failed to parse integer!");
            return;
        }
    };
    println!("Parsed integer: {}", number);
}