pub enum Measurement<T> {
Observable(T),
NonObservable(T),
}Expand description
Distinguishes observable and non-observable quantities.
For example, this will distinguish the retrieval of a superposition (that cannot be measured directly), and the state resulting from the collapse of a superposition upon measurement. See crate::SimulatedCircuit::measure_all and crate::SimulatedCircuit::get_state for examples.
Variants§
Implementations§
Source§impl<T> Measurement<T>
impl<T> Measurement<T>
Sourcepub fn take(self) -> T
pub fn take(self) -> T
Examples found in repository?
examples/qft.rs (line 64)
47fn qft(input_state: ProductState) -> Option<SuperPosition> {
48 let qubit_num = input_state.num_qubits();
49 let mut mini_circuit: Circuit = Circuit::new(qubit_num).unwrap();
50
51 for pos in 0..qubit_num {
52 mini_circuit.add_gate(Gate::H, pos).unwrap();
53 for k in 2..=(qubit_num - pos) {
54 mini_circuit
55 .add_gate(Gate::CRk(k as i32, pos + k - 1), pos)
56 .unwrap();
57 }
58 }
59
60 mini_circuit
61 .change_register(SuperPosition::from(input_state))
62 .unwrap();
63
64 Some(mini_circuit.simulate().take_state().take())
65}Auto Trait Implementations§
impl<T> Freeze for Measurement<T>where
T: Freeze,
impl<T> RefUnwindSafe for Measurement<T>where
T: RefUnwindSafe,
impl<T> Send for Measurement<T>where
T: Send,
impl<T> Sync for Measurement<T>where
T: Sync,
impl<T> Unpin for Measurement<T>where
T: Unpin,
impl<T> UnwindSafe for Measurement<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more