2 Commits

Author SHA1 Message Date
Quaternions 4e390d9981 clippy fixes 2026-06-10 20:40:26 -07:00
Quaternions b34373750b iterators for Tableau and Foundation 2026-06-10 20:39:05 -07:00
+64
View File
@@ -164,6 +164,38 @@ impl Tableau {
}) })
} }
} }
pub struct TableauIter {
tableau: Option<Tableau>,
}
impl TableauIter {
pub const fn new() -> Self {
Self {
tableau: Some(Tableau::ITER_BEGIN),
}
}
}
impl Default for TableauIter {
fn default() -> Self {
Self::new()
}
}
impl Iterator for TableauIter {
type Item = Tableau;
fn next(&mut self) -> Option<Self::Item> {
let t = self.tableau?;
self.tableau = t.next();
Some(t)
}
}
impl IntoIterator for Tableau {
type Item = Self;
type IntoIter = TableauIter;
fn into_iter(self) -> Self::IntoIter {
TableauIter {
tableau: Some(self),
}
}
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Foundation { pub enum Foundation {
@@ -184,6 +216,38 @@ impl Foundation {
}) })
} }
} }
pub struct FoundationIter {
foundation: Option<Foundation>,
}
impl FoundationIter {
pub const fn new() -> Self {
Self {
foundation: Some(Foundation::ITER_BEGIN),
}
}
}
impl Default for FoundationIter {
fn default() -> Self {
Self::new()
}
}
impl Iterator for FoundationIter {
type Item = Foundation;
fn next(&mut self) -> Option<Self::Item> {
let t = self.foundation?;
self.foundation = t.next();
Some(t)
}
}
impl IntoIterator for Foundation {
type Item = Self;
type IntoIter = FoundationIter;
fn into_iter(self) -> Self::IntoIter {
FoundationIter {
foundation: Some(self),
}
}
}
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum KlondikePile { pub enum KlondikePile {