//! Macros for delegating newtype iterators to inner types.
// Note: these place `impl` bounds at the end, as token gobbling is the only way // I know how to consume an arbitrary list of constraints, with `$($args:tt)*`.
/// Creates a parallel iterator implementation which simply wraps an inner type /// and delegates all methods inward. The actual struct must already be /// declared with an `inner` field. /// /// The implementation of `IntoParallelIterator` should be added separately.
macro_rules! delegate_iterator {
($iter:ty => $item:ty , impl $( $args:tt )*
) => { impl $( $args )* ParallelIterator for $iter { type Item = $item;
fn drive_unindexed<C>(self, consumer: C) -> C::Result where C: UnindexedConsumer<Self::Item>
{ self.inner.drive_unindexed(consumer)
}
/// Creates an indexed parallel iterator implementation which simply wraps an /// inner type and delegates all methods inward. The actual struct must already /// be declared with an `inner` field.
macro_rules! delegate_indexed_iterator {
($iter:ty => $item:ty , impl $( $args:tt )*
) => {
delegate_iterator!{
$iter => $item , impl $( $args )*
}
impl $( $args )* IndexedParallelIterator for $iter { fn drive<C>(self, consumer: C) -> C::Result where C: Consumer<Self::Item>
{ self.inner.drive(consumer)
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.