【发布时间】:2021-12-31 03:33:31
【问题描述】:
我正在做 rustlings 练习,我试着用这个来做一个大写函数。但是连接部分不起作用。它说:
“结构Vec<char>存在方法join,但不满足其特征边界
不满足以下特征界限:
<[char] as Join<_>>::Output = _"
我不知道是什么意思。加入 char 向量的正确方法是什么?
pub fn capitalize_first(input: &str) -> String {
let mut c = input.chars();
match c.next() {
None => String::new(),
Some(first) => {
let upper = first.to_ascii_uppercase();
let mut v = c.collect::<Vec<char>>();
v[0] = upper;
v.join("")
},
}
}
【问题讨论】:
-
请注意,此代码也存在逻辑错误,因为它删除了原始字符串的第二个字符 - play.rust-lang.org/…。
-
确实如此。我没有注意到收集迭代器会收集它的其余部分,即尚未迭代的部分。我以为它会从一开始就收集它。谢谢