我想把a的第一个字母大写&str.这是一个简单的问题,我希望有一个简单的解决方案.直觉告诉我做这样的事情:
let mut s = "foobar";
s[0] = s[0].to_uppercase();
Run Code Online (Sandbox Code Playgroud)
但是&strs不能像这样编入索引.我能够做到这一点的唯一方法似乎过于复杂.我将转换&str为迭代器,将迭代器转换为向量,大写为向量中的第一项,它创建了一个迭代器,我将其编入索引,创建一个Option,我打开它给我一个上面的首字母.然后我将矢量转换为迭代器,我将其转换为a String,我将其转换为a &str.
let s1 = "foobar";
let mut v: Vec<char> = s1.chars().collect();
v[0] = v[0].to_uppercase().nth(0).unwrap();
let s2: String = v.into_iter().collect();
let s3 = &s2;
Run Code Online (Sandbox Code Playgroud)
有没有比这更简单的方法,如果有,那又怎样?如果没有,为什么Rust以这种方式设计?