pub fn satisfied_constraints(self) -> impl Iterator<Item = Constraint> {
        iter::successors(
            Some(Constraint::Latin(latin_square::Constraint::RowNumber {
                row: self.row,
                value: self.value,
            })),
            move |cons| match cons {
                Constraint::Latin(latin_square::Constraint::RowNumber { .. }) => {
                    Some(Constraint::Latin(latin_square::Constraint::ColumnNumber {
                        column: self.column,
                        value: self.value,
                    }))
                }
                Constraint::Latin(latin_square::Constraint::ColumnNumber { .. }) => {
                    Some(Constraint::Latin(latin_square::Constraint::RowColumn {
                        row: self.row,
                        column: self.column,
                    }))
                }
                Constraint::Latin(latin_square::Constraint::RowColumn { .. }) => {
                    Some(Constraint::SquareNumber {
                        square: self.square,
                        value: self.value,
                    })
                }
                Constraint::SquareNumber { .. } => None,
            },
        )
    }
/// Return an iterator over the `Constraint`s that are satisfied by this
/// `Possibility`.
Return an iterator over the `Constraint`s that are satisfied by this
`Possibility`.
Return an iterator over the ` Constraint ` s that are satisfied by this ` Possibility ` .
pub fn satisfied_constraints(self) -> impl Iterator<Item = Constraint> {
        iter::successors(
            Some(Constraint::Latin(latin_square::Constraint::RowNumber {
                row: self.row,
                value: self.value,
            })),
            move |cons| match cons {
                Constraint::Latin(latin_square::Constraint::RowNumber { .. }) => {
                    Some(Constraint::Latin(latin_square::Constraint::ColumnNumber {
                        column: self.column,
                        value: self.value,
                    }))
                }
                Constraint::Latin(latin_square::Constraint::ColumnNumber { .. }) => {
                    Some(Constraint::Latin(latin_square::Constraint::RowColumn {
                        row: self.row,
                        column: self.column,
                    }))
                }
                Constraint::Latin(latin_square::Constraint::RowColumn { .. }) => {
                    Some(Constraint::SquareNumber {
                        square: self.square,
                        value: self.value,
                    })
                }
                Constraint::SquareNumber { .. } => None,
            },
        )
    }
pub fn satisfied_constraints ( self ) -> impl Iterator < Item = Constraint > { iter :: successors ( Some ( Constraint :: Latin ( latin_square :: Constraint :: RowNumber { row : self . row , value : self . value , } ) ) , move | cons | match cons { Constraint :: Latin ( latin_square :: Constraint :: RowNumber { .. } ) => { Some ( Constraint :: Latin ( latin_square :: Constraint :: ColumnNumber { column : self . column , value : self . value , } ) ) } Constraint :: Latin ( latin_square :: Constraint :: ColumnNumber { .. } ) => { Some ( Constraint :: Latin ( latin_square :: Constraint :: RowColumn { row : self . row , column : self . column , } ) ) } Constraint :: Latin ( latin_square :: Constraint :: RowColumn { .. } ) => { Some ( Constraint :: SquareNumber { square : self . square , value : self . value , } ) } Constraint :: SquareNumber { .. } => None , } , ) }
Return an iterator over the `Constraint`s that are satisfied by this
`Possibility`.
Return an iterator over the ` Constraint ` s that are satisfied by this ` Possibility ` .
self
self