意外的字符串分割行为

Joh*_*man 0 string iterator split rust

我正在阅读 rustbook 并发现了以下代码:

fn main() {
    "Hello, world!".split("#").next().expect("some message");
}
Run Code Online (Sandbox Code Playgroud)

我运行了它,但程序没有恐慌,尽管字符串中没有这样的符号,并且迭代器在调用 next() 时应该返回 None 。

之后,我查看了文档,由于某种原因,我没有找到按字符串中不存在的模式进行分割的示例。

请解释为什么在这种情况下不返回 None 。

Sil*_*olo 5

"Hello, world!".split("#")在每次出现 时成功分割字符串#。如果字符串中有 N 个哈希符号,则生成的迭代器将迭代 N+1 个分隔子字符串。在你的例子中,有 0 个哈希符号,所以你得到一个子字符串:即整个字符串本身。