Constructing Zero Knowledge Proofs

Hey everyone, I was hoping to get some assistance in understanding how to construct a zero knowledge proof. I was wondering if I can get some assistance. I am constructing a proof similar to bellman - Rust but instead my idea of circuit is multiplying to arrays,
I want to understand a few things,

  1. impl<Scalar: PrimeField> Circuit<Scalar> for MyCircuit I do not understand how exactly this is making a circuit. Can I look into a few more examples? Any reference?
  2. Can I take an array of u8 and convert to sort of vector of bits as is used in bellman - Rust
  3. How does one actually generate the constraints.

I am a bit confused and would be grateful for any help.