pub trait CRHGadget<H: CRH, F: PrimeField>: AllocGadget<H, F> + Sized + Clone {
type OutputGadget: ConditionalEqGadget<F> + EqGadget<F> + ToBytesGadget<F> + CondSelectGadget<F> + AllocGadget<H::Output, F> + Debug + Clone + Sized;
fn check_evaluation_gadget_on_bits<CS: ConstraintSystem<F>>(
&self,
cs: CS,
input: Vec<Boolean>
) -> Result<Self::OutputGadget, SynthesisError>;
fn check_evaluation_gadget<CS: ConstraintSystem<F>>(
&self,
cs: CS,
input: Vec<UInt8>
) -> Result<Self::OutputGadget, SynthesisError> { ... }
fn check_evaluation_gadget_on_field_elements<CS: ConstraintSystem<F>>(
&self,
cs: CS,
input: Vec<FpGadget<F>>
) -> Result<Self::OutputGadget, SynthesisError> { ... }
}