如何将字符串拆分为第一个字符和其余字符?

eye*_*ash 4 string rust

这是我目前拥有的代码:

fn split_first_char(s: &str) -> Option<(char, &str)> {
    let mut char_indices = s.char_indices();
    let (_, c) = char_indices.next()?;
    let i = match char_indices.next() {
        Some((i, _)) => i,
        None => s.len(),
    };
    Some((c, s.split_at(i).1))
}
Run Code Online (Sandbox Code Playgroud)

有没有更简单或内置的方法可以做到同样的事情?

eye*_*ash 8

我找到了另一个更优雅的解决方案:

fn split_first_char(s: &str) -> Option<(char, &str)> {
    let mut chars = s.chars();
    match chars.next() {
        Some(c) => Some((c, chars.as_str())),
        None => None,
    }
}
Run Code Online (Sandbox Code Playgroud)

或者

fn split_first_char(s: &str) -> Option<(char, &str)> {
    let mut chars = s.chars();
    chars.next().map(|c| (c, chars.as_str()))
}
Run Code Online (Sandbox Code Playgroud)