Как добавить символы в массив, используя только символы из диапазона u8?

Как создать соответствие для каждого элемента в диапазоне значений типа u8, отображающее их в виде строк, как показано в информации из спойлера?
  • 12 мая 2024 г. 9:30
Ответы на вопрос 2
Для добавления символов в массив с использованием только символов из диапазона u8 можно использовать следующий подход:

1. Создайте массив типа u8.
2. Добавьте символы, представленные в виде числовых значений из диапазона u8, в массив.

Пример:

```rust
fn main() {
    let mut char_array: Vec<u8> = Vec::new();
    
    char_array.push(65); // Добавление символа 'A' в массив
    char_array.push(66); // Добавление символа 'B' в массив
    char_array.push(67); // Добавление символа 'C' в массив
    
    println!("{:?}", char_array);
}
```

Для создания соответствия для каждого элемента в диапазоне значений типа u8, отображающего их в виде строк, можно использовать HashMap, где ключом будет значение типа u8, а значением - соответствующая строка.

Пример:

```rust
use std::collections::HashMap;

fn main() {
    let mut char_map: HashMap<u8, &str> = HashMap::new();

    for i in 65..=90 {
        char_map.insert(i, &(i as char).to_string()); // Преобразование числового значения в символ и затем в строку
    }

    println!("{:?}", char_map);
}
```

Этот код создаст соответствие для значений типа u8 от 65 до 90, преобразуя их в соответствующие строки (буквы от 'A' до 'Z').
fn main() {
    let src: Vec<[u8; 1]> = (0..u8::MAX).map(|i| [i]).collect();
    let mut info =  Vec::<&str>::with_capacity(u8::MAX.into());
    for u in &src {
        let t = std::str::from_utf8(&*u).unwrap_or("Err");
        info.push(t);
    }
    println!("\n{:#?}", info);
}

но надо понимать, что info будет связан лайфтаймом с src , чтоб избавится от этого нужно хранить в нём не &str а String или Box<str>
fn main() {
    let info: Vec<Box<str>> = (0..u8::MAX).map(|i| {
        let u = [i];
        let t = std::str::from_utf8(&u).unwrap_or("Err");
        t.into()
    }).collect();
    println!("\n{:#?}", info);
}
Похожие вопросы