Преобразование строки Rust в массив символов: несколько методов, объясненных примерами кода

В Rust преобразование массива Stringв массив charможет быть полезно в различных сценариях. В этой статье блога мы рассмотрим несколько методов преобразования Rust Stringв массив char, а также приведем примеры кода. Независимо от того, являетесь ли вы новичком или опытным разработчиком Rust, это руководство предоставит вам полное понимание различных подходов к достижению такого преобразования.

Метод 1: использование метода chars
Первый метод предполагает использование метода chars, который возвращает итератор по символам строки. Мы можем собрать итератор в Vec<char>, а затем преобразовать его в массив.

fn main() {
    let my_string = String::from("Hello, Rust!");
    let char_array: Vec<char> = my_string.chars().collect();
    let char_array: &[char] = &char_array;

    // Printing the char array
    println!("{:?}", char_array);
}

Метод 2: использование методов as_strи as_bytes.
Второй метод использует комбинацию as_strи as_bytesметоды. Мы преобразуем Stringв фрагмент строки, а затем получаем байтовое представление, используя as_bytes(). Наконец, мы можем преобразовать срез байтов в массив char.

fn main() {
    let my_string = String::from("Hello, Rust!");
    let byte_array: &[u8] = my_string.as_bytes();
    let char_array: &[char] = unsafe { std::mem::transmute(byte_array) };

    // Printing the char array
    println!("{:?}", char_array);
}

Метод 3: использование методов into_bytesи from_utf8.
Третий метод включает преобразование Stringв байтовый вектор с использованием into_bytesметод. Затем мы можем использовать функцию from_utf8для преобразования вектора байтов в срез String. Наконец, мы можем преобразовать фрагмент Stringв массив char.

fn main() {
    let my_string = String::from("Hello, Rust!");
    let byte_array: Vec<u8> = my_string.into_bytes();
    let char_array: &[char] = std::str::from_utf8(&byte_array)
        .expect("Invalid UTF-8")
        .chars()
        .collect::<Vec<char>>()
        .as_slice();

    // Printing the char array
    println!("{:?}", char_array);
}

В этой статье мы рассмотрели три различных метода преобразования Rust Stringв массив char. Используя метод chars, методы as_strи as_bytesили into_bytesи from_utf8, вы можете выполнить это преобразование в соответствии с вашими конкретными требованиями. Не забудьте выбрать метод, который лучше всего соответствует вашим потребностям с точки зрения производительности и удобства использования.