【发布时间】:2021-02-20 03:21:32
【问题描述】:
我刚刚看到this answer 了解如何在给定的 Rust 字符串中搜索子字符串。代码大致如下:
let s = "Hello, world!";
let ss: String = s.chars().skip(7).take(5).collect();
但我现在很想知道skip 是如何工作的。它真的在开始产生之前迭代了迭代器的前 7 个元素吗?还是在幕后耍花招?
【问题讨论】:
-
为什么它不能完全按照你的想法做?
-
因为这是一个字符串,我可以想象这个实现实际上只是相当于将 7 添加到指针并进行边界检查。
-
@tadman 无法添加
7,因为Strings 是utf8,所以字符不是固定的字节数。 -
@loganfsmyth 我在这里做了很大的简化,但它可能只是在指针上跳过。
-
我的意思是,通过足够的简化,一切都是指针:P 我只想指出的是,感觉您的评论具有误导性,因为 7 个字节不是 7 个字符。或者不会误导,但至少可能会增加混乱。
标签: rust