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}