@@ -17,8 +17,35 @@ use std::fmt;
1717/// This structure embodies (Sequential Ordering) by defining a precise
1818/// list of interactions to be simulated. It captures a specific process or algorithm within the framework.
1919///
20- /// Analogy: Similar to `cirq.Circuit` or `qiskit.QuantumCircuit`, representing the
21- /// sequence of gates and measurements applied to qubits.
20+ /// Analogy: Similar to `cirq.Circuit` or `qiskit.QuantumCircuit`.
21+ ///
22+ /// # Examples
23+ ///
24+ /// ```
25+ /// # use onq::{Circuit, CircuitBuilder, Operation, QduId, LockType};
26+ /// # fn qid(id: u64) -> QduId { QduId(id) }
27+ /// let q0 = qid(0);
28+ /// let q1 = qid(1);
29+ ///
30+ /// // Create using methods
31+ /// let mut circuit1 = Circuit::new();
32+ /// circuit1.add_operation(Operation::InteractionPattern { target: q0, pattern_id: "Superposition".to_string()});
33+ /// circuit1.add_operation(Operation::ControlledInteraction { control: q0, target: q1, pattern_id: "QualityFlip".to_string()});
34+ ///
35+ /// // Create using builder
36+ /// let circuit2 = CircuitBuilder::new()
37+ /// .add_op(Operation::InteractionPattern { target: q0, pattern_id: "Superposition".to_string()})
38+ /// .add_op(Operation::ControlledInteraction { control: q0, target: q1, pattern_id: "QualityFlip".to_string()})
39+ /// .build();
40+ ///
41+ /// assert_eq!(circuit1.len(), 2);
42+ /// assert!(circuit1.qdus().contains(&q0));
43+ /// assert!(circuit1.qdus().contains(&q1));
44+ /// assert_eq!(circuit1, circuit2);
45+ ///
46+ /// // Print the circuit diagram
47+ /// println!("{}", circuit1);
48+ /// ```
2249#[ derive( Clone , PartialEq ) ] // PartialEq useful for testing circuits
2350pub struct Circuit {
2451 /// The unique set of QDUs involved across all operations in this circuit.
@@ -115,7 +142,22 @@ impl Default for Circuit {
115142// Circuit Builder
116143//-------------------------------------------------------------------------
117144
118- /// A helper struct for programmatically constructing `Circuit` instances using method chaining.
145+ /// A helper struct for programmatically constructing [`Circuit`] instances using method chaining.
146+ ///
147+ /// # Examples
148+ /// ```
149+ /// # use onq::{Circuit, CircuitBuilder, Operation, QduId, LockType};
150+ /// # fn qid(id: u64) -> QduId { QduId(id) }
151+ /// let q0 = qid(0);
152+ /// let q1 = qid(1);
153+ ///
154+ /// let circuit = CircuitBuilder::new()
155+ /// .add_op(Operation::InteractionPattern { target: q0, pattern_id: "Superposition".to_string()})
156+ /// .add_op(Operation::ControlledInteraction { control: q0, target: q1, pattern_id: "QualityFlip".to_string()})
157+ /// .build();
158+ ///
159+ /// assert_eq!(circuit.len(), 2);
160+ /// ```
119161pub struct CircuitBuilder {
120162 circuit : Circuit ,
121163 // Potential future fields:
0 commit comments