pub struct SurfaceCode {
pub distance: usize,
pub lattice_size: (usize, usize),
pub physical_qubits: HashMap<(i32, i32), usize>,
pub x_stabilizers: Vec<TopologicalStabilizer>,
pub z_stabilizers: Vec<TopologicalStabilizer>,
pub logical_x: Vec<LogicalOperator>,
pub logical_z: Vec<LogicalOperator>,
}Expand description
Surface code implementation
Fields§
§distance: usizeCode distance
lattice_size: (usize, usize)Lattice dimensions
physical_qubits: HashMap<(i32, i32), usize>Physical qubits
x_stabilizers: Vec<TopologicalStabilizer>X-type stabilizers
z_stabilizers: Vec<TopologicalStabilizer>Z-type stabilizers
logical_x: Vec<LogicalOperator>Logical X operators
logical_z: Vec<LogicalOperator>Logical Z operators
Implementations§
Source§impl SurfaceCode
impl SurfaceCode
Sourcepub fn new(distance: usize) -> TopologicalResult<Self>
pub fn new(distance: usize) -> TopologicalResult<Self>
Create a new surface code
Sourcepub fn physical_qubit_count(&self) -> usize
pub fn physical_qubit_count(&self) -> usize
Get number of physical qubits
Sourcepub const fn logical_qubit_count(&self) -> usize
pub const fn logical_qubit_count(&self) -> usize
Get number of logical qubits
Sourcepub fn get_all_stabilizers(&self) -> Vec<&TopologicalStabilizer>
pub fn get_all_stabilizers(&self) -> Vec<&TopologicalStabilizer>
Get all stabilizers
Auto Trait Implementations§
impl Freeze for SurfaceCode
impl RefUnwindSafe for SurfaceCode
impl Send for SurfaceCode
impl Sync for SurfaceCode
impl Unpin for SurfaceCode
impl UnwindSafe for SurfaceCode
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.