根据https://doc.rust-lang.org/std/str/struct.Split.html,对字符串执行rev
的结果有split
方法
我收到以下错误
error: the trait `core::str::pattern::DoubleEndedSearcher<'_>` is not
implemented for the type `core::str::pattern::StrSearcher<'_, '_>` [E0277]
for part in "1:30".split(":").rev() {
我使用的代码
let mut length = 0;
let mut mult = 1;
for part in "1:30".split(":").rev() {
length += mult * part.parse::<i32>().unwrap();
mult *= 60;
}
[问题是,仅当rev()
迭代器实现Split
时才在DoubleEndedIterator
迭代器上定义,但是Split
仅当您要分割的模式的搜索者满足DoubleEndedIterator
时才实现DoubleEndedSearcher
:] >
impl<'a, P> DoubleEndedIterator for Split<'a, P> where P: Pattern<'a>, P::Searcher: DoubleEndedSearcher<'a>
其他答案正确,但是我想指出rsplit
。这可能更明显,更有效。
所以,为什么不能使用rsplit
?其他答案指出,rev
尚未实现。但是为什么
TLDR
:"baaab".split("aa").rev() // -> ["b", "aa", "ba"]
(用于搜索字符串模式的类型)没有实现rsplit
,因此,StrSearcher
迭代器没有实现DoubleEndedSearcher
,因此,您不能在其上调用split
。