rename and relocate iter methods

Co-authored-by: backwardspy <backwardspy@gmail.com>
Co-authored-by: Carsten Kragelund <carsten@kragelund.dev>
This commit is contained in:
Gingeh 2022-10-24 20:33:53 +11:00 committed by Hamothy
parent 309790a80f
commit 41035e40cd
4 changed files with 20 additions and 15 deletions

View file

@ -1,12 +1,13 @@
use catppuccin::flavours_iter; use catppuccin::Flavour;
fn main() { fn main() {
// iterate over the four Catppuccin flavours. // iterate over the four Catppuccin flavours.
for flavour in flavours_iter() { for flavour in Flavour::into_iter() {
println!("{}", flavour.name()); println!("{}", flavour.name());
// iterate over the 26 colours in the flavour. // iterate over the 26 colours in the flavour.
for (i, colour) in flavour.palette().iter().enumerate() { for (i, colour) in flavour.palette().into_iter().enumerate() {
print!("{}", colour.ansi_paint("██")); print!("{}", colour.ansi_paint("██"));
// the 14 analogous colours go on one line, // the 14 analogous colours go on one line,

View file

@ -1,4 +1,3 @@
use crate::{Colour, Palette}; use crate::{Colour, Palette};
#[derive(Debug, PartialEq, Eq, Clone, Copy)] #[derive(Debug, PartialEq, Eq, Clone, Copy)]
@ -132,9 +131,19 @@ impl Flavour {
base: Colour(30, 30, 46), base: Colour(30, 30, 46),
mantle: Colour(24, 24, 37), mantle: Colour(24, 24, 37),
crust: Colour(17, 17, 27), crust: Colour(17, 17, 27),
} },
} }
} }
/// Returns an iterator over the four delicious Catppuccin flavours.
pub fn into_iter() -> std::array::IntoIter<Flavour, 4> {
[
Self::Latte,
Self::Frappe,
Self::Macchiato,
Self::Mocha,
]
.into_iter()
}
} }
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {

View file

@ -61,19 +61,14 @@ pub use palette::Palette;
mod flavour; mod flavour;
pub use flavour::Flavour; pub use flavour::Flavour;
/// Returns an iterator over the four delicious Catppuccin flavours.
pub fn flavours_iter() -> std::array::IntoIter<Flavour, 4> {
[Flavour::Latte, Flavour::Frappe, Flavour::Macchiato, Flavour::Mocha].into_iter()
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::{flavours_iter, Flavour}; use super::Flavour;
/// Ensures flavours are iterated in the correct order. /// Ensures flavours are iterated in the correct order.
#[test] #[test]
fn test_flavours_iter() { fn test_flavours_iter() {
let mut flavours = flavours_iter(); let mut flavours = Flavour::into_iter();
assert_eq!(flavours.next(), Some(Flavour::Latte)); assert_eq!(flavours.next(), Some(Flavour::Latte));
assert_eq!(flavours.next(), Some(Flavour::Frappe)); assert_eq!(flavours.next(), Some(Flavour::Frappe));
assert_eq!(flavours.next(), Some(Flavour::Macchiato)); assert_eq!(flavours.next(), Some(Flavour::Macchiato));
@ -84,9 +79,9 @@ mod tests {
/// Ensures colours within each flavour are iterated in the correct order. /// Ensures colours within each flavour are iterated in the correct order.
#[test] #[test]
fn test_colours_iter() { fn test_colours_iter() {
for flavour in flavours_iter() { for flavour in Flavour::into_iter() {
let palette = flavour.palette(); let palette = flavour.palette();
let mut colours = palette.iter(); let mut colours = palette.into_iter();
assert_eq!(colours.next(), Some(&palette.rosewater)); assert_eq!(colours.next(), Some(&palette.rosewater));
assert_eq!(colours.next(), Some(&palette.flamingo)); assert_eq!(colours.next(), Some(&palette.flamingo));
assert_eq!(colours.next(), Some(&palette.pink)); assert_eq!(colours.next(), Some(&palette.pink));

View file

@ -33,7 +33,7 @@ pub struct Palette {
impl Palette { impl Palette {
/// Returns an iterator over the colours in the flavour. /// Returns an iterator over the colours in the flavour.
pub fn iter(&self) -> std::array::IntoIter<&Colour, 26> { pub fn into_iter(&self) -> std::array::IntoIter<&Colour, 26> {
[ [
&self.rosewater, &self.rosewater,
&self.flamingo, &self.flamingo,