polynomint/iter.rs
1use crate::Polynomial;
2
3impl IntoIterator for Polynomial {
4 type Item = isize;
5 type IntoIter = std::vec::IntoIter<isize>;
6
7 fn into_iter(self) -> Self::IntoIter {
8 self.coeffs.into_iter()
9 }
10}
11
12impl Polynomial {
13 /// Returns an immutably referencing iterator over the underlying
14 /// `Vec` of coefficients.
15 ///
16 /// # Examples
17 /// ```
18 /// use polynomint::{Polynomial, poly};
19 ///
20 /// let poly = poly![5, 3, -2, 1];
21 /// let mut iter = poly.iter();
22 ///
23 /// assert_eq!(iter.next(), Some(&5));
24 /// assert_eq!(iter.next(), Some(&3));
25 /// assert_eq!(iter.next(), Some(&(-2)));
26 /// assert_eq!(iter.next(), Some(&1));
27 /// assert_eq!(iter.next(), None);
28 /// ```
29 pub fn iter(&'_ self) -> std::slice::Iter<'_, isize> {
30 self.coeffs.iter()
31 }
32
33 /// Returns a mutably referencing iterator over the underlying
34 /// `Vec` of coefficients.
35 ///
36 /// # Examples
37 /// ```
38 /// use polynomint::{Polynomial, poly};
39 ///
40 /// let mut poly = poly![5, 3, -2, 1];
41 /// for coeff in poly.iter_mut() {
42 /// *coeff *= 3;
43 /// }
44 /// assert_eq!(poly, poly![15, 9, -6, 3]);
45 /// ```
46 pub fn iter_mut(&'_ mut self) -> std::slice::IterMut<'_, isize> {
47 self.coeffs.iter_mut()
48 }
49}