1use crate::emit_traits;
2use newer_type::target;
3
4emit_traits! {
5 #[implement_of(newer_type_std::iter::IntoIterator)]
6 #[slot(Vec<u8>)]
7 #[target(alternative = ::core::iter::IntoIterator)]
8 pub trait IntoIterator {
9 type Item;
10 type IntoIter: ::core::iter::Iterator<Item = Self::Item>;
11 fn into_iter(self) -> Self::IntoIter;
12 }
13
14 #[implement_of(for<A> newer_type_std::iter::Extend<A>)]
15 #[slot(Vec<u8>)]
16 #[target(alternative = ::core::iter::Extend)]
17 pub trait Extend[A] {
18 fn extend<T>(&mut self, iter: T)
19 where
20 T: ::core::iter::IntoIterator<Item = A>;
21 }
22
23 #[implement_of(newer_type_std::iter::Iterator)]
24 #[slot(std::vec::IntoIter<u8>)]
25 #[target(alternative = ::core::iter::Iterator)]
26 pub trait Iterator {
27 type Item;
28 fn next(&mut self) -> ::core::option::Option<Self::Item>;
29 fn size_hint(
30 &self,
31 ) -> (
32 ::core::primitive::usize,
33 ::core::option::Option<::core::primitive::usize>,
34 );
35 fn count(self) -> ::core::primitive::usize
36 where
37 Self: ::core::marker::Sized;
38 fn last(self) -> ::core::option::Option<Self::Item>
39 where
40 Self: ::core::marker::Sized;
41 fn nth(&mut self, n: ::core::primitive::usize) -> ::core::option::Option<Self::Item>;
42 }
43
44 #[implement_of(newer_type_std::iter::Iterator, newer_type_std::iter::FusedIterator)]
45 #[slot(std::vec::IntoIter<u8>)]
46 #[target(alternative = ::core::iter::FusedIterator)]
47 pub trait FusedIterator: [::core::iter::Iterator] {}
48
49
50 #[implement_of(newer_type_std::iter::Iterator, newer_type_std::iter::ExactSizeIterator)]
51 #[slot(std::vec::IntoIter<u8>)]
52 #[target(alternative = ::core::iter::ExactSizeIterator)]
53 pub trait ExactSizeIterator: [::core::iter::Iterator] {
54 fn len(&self) -> ::core::primitive::usize;
55 }
56
57
58 #[implement_of(newer_type_std::iter::Iterator, newer_type_std::iter::DoubleEndedIterator)]
59 #[slot(std::vec::IntoIter<u8>)]
60 #[target(alternative = ::core::iter::DoubleEndedIterator)]
61 pub trait DoubleEndedIterator: [::core::iter::Iterator] {
62 fn next_back(&mut self) -> ::core::option::Option<Self::Item>;
63
64 fn nth_back(
65 &mut self,
66 n: ::core::primitive::usize,
67 ) -> ::core::option::Option<Self::Item>;
68 fn rfold<B, F>(self, init: B, f: F) -> B
74 where
75 Self: ::core::marker::Sized,
76 F: ::core::ops::FnMut(B, Self::Item) -> B;
77 fn rfind<P>(&mut self, predicate: P) -> ::core::option::Option<Self::Item>
78 where
79 Self: ::core::marker::Sized,
80 P: ::core::ops::FnMut(&Self::Item) -> ::core::primitive::bool;
81 }
82}