【发布时间】:2021-12-15 20:59:41
【问题描述】:
我最近才开始学习 Rust,并且一直在搞乱一些代码。我想创建一个简单的函数,从字符串中删除元音并返回一个新字符串。下面的代码可以运行,但我担心这是否真的是这种语言中有效的典型方法,或者我是否遗漏了什么......
// remove vowels by building a String using .contains() on a vowel array
fn remove_vowels(s: String) -> String {
let mut no_vowels: String = String::new();
for c in s.chars() {
if !['a', 'e', 'i', 'o', 'u'].contains(&c) {
no_vowels += &c.to_string();
}
}
return no_vowels;
}
首先,使用to_string() 构造一个新的字符串,然后使用& 借用似乎不合适。有没有更简单的方法将字符附加到字符串,或者这是唯一的方法?还是我应该完全重写它并使用循环按长度而不是字符数组遍历输入的字符串?
另外,我被告知在 Rust 中很流行不使用 return 语句,而是让最后一个表达式从函数中返回值。此处是否需要我的 return 语句,还是有一种更简洁的方法可以按照约定返回该值?
【问题讨论】:
-
写
no_vowels += &c.to_string()的更好方法是no_vowels.push(c)。
标签: string rust character borrow-checker