SeS*_*esa 2 string iterator substring rust
许多迭代器方法都是 Rust 生成的迭代器包裹在迭代器中的。一种这样的情况是方法skip,它跳过给定数量的元素并生成包装在Skip实现该Iterator特征的结构中的剩余元素。
我想逐行读取文件,有时会跳过n一行的第一个字符。我认为 usingIterator.skip会起作用,但现在我一直在思考如何实际解开生成的Chars迭代器,以便我可以使用 来实现剩余的&str内容chars.as_str()。
在 Rust 中展开迭代器的惯用方法是什么?调用链
let line: &String = ...;
let remaining = line.chars().skip(n).as_str().trim();
Run Code Online (Sandbox Code Playgroud)
引发错误
error[E0599]: no method named `as_str` found for struct `std::iter::Skip<std::str::Chars<'_>>` in the current scope
--> src/parser/directive_parsers.rs:367:63
|
367 | let option_val = line.chars().skip(option_val_indent).as_str().trim();
| ^^^^^^ method not found in `std::iter::Skip<std::str::Chars<'_>>`
error: aborting due to previous error
Run Code Online (Sandbox Code Playgroud)
nth()您可以使用字符串迭代器上的方法检索第 n 个字符的起始字节索引char_indices()。一旦有了这个字节索引,就可以使用它来获取原始字符串的子切片:
let line = "This is a line.";
let index = line.char_indices().nth(n).unwrap().0;
let remaining = &line[index..];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
950 次 |
| 最近记录: |