Closed
Description
Minimized when trying to build core:
#![feature(associated_type_bounds)]
use std::iter::FlatMap;
trait DoubleEndedIterator: Iterator {
fn next_back(&mut self) -> Option<Self::Item>;
}
impl<I: DoubleEndedIterator, U, F> DoubleEndedIterator for FlatMap<I, U, F>
where
F: FnMut(I::Item) -> U,
U: IntoIterator,
<U as IntoIterator>::IntoIter: DoubleEndedIterator, //~ This line is bad, specifically b/c `DoubleEndedIterator` has the `Iterator` supertrait, I believe.
{
fn next_back(&mut self) -> Option<U::Item> {
todo!()
}
}
I think it's because the solver is having trouble projecting <<U as IntoIterator>::IntoIter as Iterator>::Item
into <U as IntoIterator>::Item
. It should be possible to do that via this item bound type IntoIter: Iterator<Item = Self::Item>
.
Metadata
Metadata
Assignees
Labels
No labels