Изучение Rust: преобразование целого числа в вектор цифр

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

Метод 1: использование операторов деления и по модулю
Первый метод включает использование операторов деления и по модулю для извлечения цифр целого числа. Вот пример реализации:

fn integer_to_digits(n: u32) -> Vec<u32> {
    let mut digits = Vec::new();
    let mut num = n;
    while num > 0 {
        digits.push(num % 10);
        num /= 10;
    }
    digits.reverse();
    digits
}

Метод 2: преобразование в строку и сопоставление символов
Другой подход заключается в преобразовании целого числа в строку и последующем сопоставлении каждого символа с соответствующей цифрой. Вот пример:

fn integer_to_digits(n: u32) -> Vec<u32> {
    n.to_string()
        .chars()
        .map(|c| c.to_digit(10).unwrap())
        .collect()
}

Метод 3: рекурсивный подход
Мы также можем решить эту проблему рекурсивно. Вот пример:

fn integer_to_digits(n: u32) -> Vec<u32> {
    if n < 10 {
        vec![n]
    } else {
        let mut digits = integer_to_digits(n / 10);
        digits.push(n % 10);
        digits
    }
}

Метод 4: использование итераторов
Итераторы Rust предоставляют краткий способ преобразования целого числа в вектор цифр. Вот пример:

fn integer_to_digits(n: u32) -> Vec<u32> {
    n.to_string()
        .chars()
        .map(|c| c.to_digit(10).unwrap())
        .collect()
}

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