pub trait ProbeSolver {
type BlockType: Block;
fn with_board(board: MutRc<Board<Self::BlockType>>) -> Self;
fn unsolved_cells(&self) -> PQ<Point, Priority, DefaultHashBuilder>;
fn propagate_point<S>(
&mut self,
point: &Point
) -> Result<Vec<(Point, Priority)>, UnsolvableLine>
where
S: LineSolver<BlockType = Self::BlockType>;
fn run<S>(
&mut self,
probes: &mut PQ<Point, Priority, DefaultHashBuilder>
) -> Result<Vec<ProbeImpact<<Self::BlockType as Block>::Color>>, String>
where
S: LineSolver<BlockType = Self::BlockType>;
fn run_unsolved<S>(
&mut self
) -> Result<Vec<ProbeImpact<<Self::BlockType as Block>::Color>>, String>
where
S: LineSolver<BlockType = Self::BlockType>,
{ ... }
}