如何在 Rust 中按字符(Unicode 字符)迭代字符串?
大家好!我刚开始学习 Rust,遇到了字符串迭代的问题。在其他语言(如 Python 或 C++)中,我习惯将字符串视为字符数组,可以通过索引或 for 循环遍历。
但在 Rust 中情况更复杂。以下是我尝试过的代码:
```rust
let s = "Привет, мир!";
for c in s {
println!("{}", c);
}
```
编译器报错:`error[E0277]: the trait bound \`str: Iterator\` is not satisfied`。我知道 `str` 不是迭代器,但如何获取每个字符呢?
我还尝试过通过索引访问:
```rust
let s = "Привет";
println!("{}", s[0]); // 错误!
```
又报错了:Rust 中的字符串不能直接索引,因为 Unicode 字符可能占用不同数量的字节。
最终我需要:获取一个字符串,遍历每个字符(包括西里尔字母、emoji 和特殊字符),并对每个字符执行操作。例如,计算字符数量或将所有元音替换为 '*'。