Достаточно простая задачка как для уже опытного в Rust программиста, так и для новичка, только щупающего язык. Имеет несколько вариантов решений, здесь напишу то, до чего додумался.

Как решил задачку

  1. Взял строку и вызвал метод chars, преобразовав строку в итератор символов;
  2. С помощью метода rev изменил порядок итератора;
  3. Собрал итератор в коллекцию с помощью метода collect, дженериком преобразовал в строку (не стековый тип &str, а String).

Конечный код:

// reverse-string/lib.rs
use unicode_segmentation::UnicodeSegmentation;
 
pub fn reverse(input: &str) -> String {
    // Return iterator of chars, reverse iterator, turn it into collection and join in String type
    // input.chars().rev().collect::<String>()
    input.graphemes(true).rev().collect::<String>()
}