use crate::{cells::CellRef, rules::Rule};
#[cfg(feature = "serde")]
use crate::save::ReasonSer;
pub trait Reason<R: Rule> {
const KNOWN: Self;
const DECIDED: Self;
fn from_cell(cell: CellRef<R>) -> Self;
fn from_sym(cell: CellRef<R>) -> Self;
fn is_decided(&self) -> bool;
#[cfg(feature = "serde")]
#[cfg_attr(any(docs_rs, github_io), doc(cfg(feature = "serde")))]
fn ser(&self) -> ReasonSer;
}