Von der std::iter::Iterator
Dokumentation, kann ich sehen, dass nur die next
Verfahren erforderlich:Woher weiß Rust, welche Merkmalsarten benötigt oder bereitgestellt werden?
Benötigte Verfahren
fn next(&mut self) -> Option<Self::Item>
Aber vom source code, nach dem Entfernen Kommentare:
pub trait Iterator {
/// The type of the elements being iterated over.
#[stable(feature = "rust1", since = "1.0.0")]
type Item;
......
#[stable(feature = "rust1", since = "1.0.0")]
fn next(&mut self) -> Option<Self::Item>;
......
#[inline]
#[stable(feature = "rust1", since = "1.0.0")]
fn size_hint(&self) -> (usize, Option<usize>) { (0, None) }
......
}
Ich kann sehen, außer für die #[inline]
Attribut, Es besteht kein Unterschied zwischen erforderlichen und bereitgestellten Methoden. Woher weiß Rust, welche Methode benötigt oder bereitgestellt wird?