Vendor dependencies for 0.3.0 release

This commit is contained in:
2025-09-27 10:29:08 -05:00
parent 0c8d39d483
commit 82ab7f317b
26803 changed files with 16134934 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
//! Utilities for the `NSEnumerator` class.
use objc2::rc::Retained;
use objc2::Message;
use super::iter;
use crate::Foundation::NSEnumerator;
// TODO: Measure whether iterating through `nextObject` or fast enumeration is
// fastest.
// impl<T: Message> Iterator for NSEnumerator<T> {
// type Item = Retained<T>;
//
// #[inline]
// fn next(&mut self) -> Option<Retained<T>> {
// self.nextObject()
// }
// }
unsafe impl<T: Message> iter::FastEnumerationHelper for NSEnumerator<T> {
type Item = T;
#[inline]
fn maybe_len(&self) -> Option<usize> {
None
}
}
/// A consuming iterator over the items of a `NSEnumerator`.
#[derive(Debug)]
pub struct IntoIter<T: Message>(iter::IntoIter<NSEnumerator<T>>);
__impl_iter! {
impl<'a, T: Message> Iterator<Item = Retained<T>> for IntoIter<T> { ... }
}
impl<T: Message> objc2::rc::RetainedIntoIterator for NSEnumerator<T> {
type Item = Retained<T>;
type IntoIter = IntoIter<T>;
#[inline]
fn id_into_iter(this: Retained<Self>) -> Self::IntoIter {
IntoIter(super::iter::IntoIter::new(this))
}
}
// TODO: Does fast enumeration modify the enumeration while iterating?