rust - 如何从迭代器循环内部跳过 n 个项目?
问题描述
这段代码:
fn main() {
let text = "abcd";
for char in text.chars() {
if char == 'b' {
// skip 2 chars
}
print!("{}", char);
}
// prints `abcd`, but I want `ad`
}
打印abcd
,但如果找到,我想跳过 2 个字符b
,以便打印ad
. 我怎么做?
我试图将迭代器放入循环外的变量中并在循环内操作该迭代器,但借用检查器不允许这样做。
解决方案
AFAIK 你不能用for
循环来做到这一点。您需要手动对其进行脱糖:
let mut it = text.chars();
while let Some(char) = it.next() {
if char == 'b' {
it.nth(1); // nth(1) skips/consumes exactly 2 items
continue;
}
print!("{}", char);
}
推荐阅读
- graphql - 读取 useMutation 中使用的变量
- java - 记录器程序找不到符号
- java - 不要在外部点击时关闭弹出窗口
- java - 组合优于继承使用
- python - 使用文件python第一行中的字符串重命名目录中的“.tbl”文件
- java - 使用tomcat时不能使用java包
- python - Python Bokeh - 上传 zip 文件并更新数据源
- python - 尝试在 wordpress api 中发送图像时出错
- javascript - 如何监控网站上不断更新的值?
- hibernate - SpringBoot 2.1.9.RELEASE JPA.2.2 无法转换 OffsetDateTime