pub enum BlockKind {
Cube(CubeKind),
Walking(WalkingKind),
PatchRotation(PatchRotationKind),
Y,
Measurement(Basis),
Port,
T,
Selective(SelectiveKind),
}Expand description
The kind of a Block, determining its surface code semantics and lattice
footprint.
Variants§
Cube(CubeKind)
A single-cell cube with a fixed boundary orientation.
Walking(WalkingKind)
A patch that walks diagonally by one cell over one time layer.
PatchRotation(PatchRotationKind)
A patch that rotates 90 degrees over one time layer.
Y
A Y-basis state injection block.
Measurement(Basis)
A fixed terminal transversal measurement in the X or Z basis.
Port
An open connection endpoint (graph input or output).
T
A T-state (magic state) block, lowered via cultivation.
Selective(SelectiveKind)
A selective measurement/preparation block resolved at runtime.
Implementations§
Source§impl BlockKind
impl BlockKind
Sourcepub const fn is_walking(&self) -> bool
pub const fn is_walking(&self) -> bool
Returns whether this is a walking block.
Sourcepub const fn is_patch_rotation(&self) -> bool
pub const fn is_patch_rotation(&self) -> bool
Returns whether this is a patch-rotation block.
Sourcepub const fn is_measurement(&self) -> bool
pub const fn is_measurement(&self) -> bool
Returns whether this is a fixed terminal measurement.
Sourcepub const fn is_selective(&self) -> bool
pub const fn is_selective(&self) -> bool
Returns whether this is a runtime-selective block.
Sourcepub const fn is_dynamic(&self) -> bool
pub const fn is_dynamic(&self) -> bool
Returns whether the block’s behavior is resolved at runtime (selective or T blocks) rather than fixed at compile time.
Sourcepub fn flip_xz_basis(self) -> Self
pub fn flip_xz_basis(self) -> Self
Returns a copy with every X and Z boundary basis swapped.
§Panics
Panics if an internally stored cube kind violates its basis invariant.
Sourcepub const fn is_clifford(&self) -> bool
pub const fn is_clifford(&self) -> bool
Returns whether the block is Clifford (everything except the T block).
Sourcepub const fn all_kinds() -> [BlockKind; 16]
pub const fn all_kinds() -> [BlockKind; 16]
Returns one representative of every block kind, using default parameters for the parameterized kinds.
Sourcepub fn reserved_offsets(self) -> SmallVec<[IVec3; 2]>
pub fn reserved_offsets(self) -> SmallVec<[IVec3; 2]>
Returns the cells the kind reserves, as offsets from its position.
Cube height is applied per-block by Block::reserved_offsets, so the
single-cell kinds here reserve only the origin.
Sourcepub fn allows_reserved_overlap(
self,
self_pos: IVec3,
other: BlockKind,
other_pos: IVec3,
overlap_pos: IVec3,
) -> bool
pub fn allows_reserved_overlap( self, self_pos: IVec3, other: BlockKind, other_pos: IVec3, overlap_pos: IVec3, ) -> bool
Returns whether two blocks may both reserve overlap_pos.
Only walking blocks permit shared reserved cells, and never at a hard endpoint of either block.
Sourcepub fn connectable_offsets(self) -> SmallVec<[IVec3; 2]>
pub fn connectable_offsets(self) -> SmallVec<[IVec3; 2]>
Returns the cells that can host pipe connections, as offsets from the block position.
Sourcepub fn bases(self) -> Option<[Basis; 3]>
pub fn bases(self) -> Option<[Basis; 3]>
Returns the block’s per-axis boundary bases, or None for kinds without
a fixed boundary frame (Y, measurement, Port, T, and selective blocks).
Sourcepub fn bases_at_endpoint(
self,
block_pos: IVec3,
endpoint: IVec3,
) -> Option<[Basis; 3]>
pub fn bases_at_endpoint( self, block_pos: IVec3, endpoint: IVec3, ) -> Option<[Basis; 3]>
Returns the boundary bases exposed at endpoint, or None if the block
exposes no connectable endpoint there.
Sourcepub fn pipe_face_bases_at_endpoint(
self,
block_pos: IVec3,
endpoint: IVec3,
) -> Option<[Basis; 3]>
pub fn pipe_face_bases_at_endpoint( self, block_pos: IVec3, endpoint: IVec3, ) -> Option<[Basis; 3]>
Returns the bases on the pipe face at endpoint.
Matches bases_at_endpoint except for patch
rotation, whose pipe face uses the construction basis directly.
Trait Implementations§
impl Copy for BlockKind
impl Eq for BlockKind
Source§impl Ord for BlockKind
impl Ord for BlockKind
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialOrd for BlockKind
impl PartialOrd for BlockKind
impl StructuralPartialEq for BlockKind
Auto Trait Implementations§
impl Freeze for BlockKind
impl RefUnwindSafe for BlockKind
impl Send for BlockKind
impl Sync for BlockKind
impl Unpin for BlockKind
impl UnsafeUnpin for BlockKind
impl UnwindSafe for BlockKind
Blanket Implementations§
§impl<T, BorrowedSelf> BitwiseMutViaBorrow<BorrowedSelf> for T
impl<T, BorrowedSelf> BitwiseMutViaBorrow<BorrowedSelf> for T
fn assign_index(&mut self, index: usize, to: bool)
fn negate_index(&mut self, index: usize)
fn clear_bits(&mut self)
fn assign_random(
&mut self,
bit_count: usize,
random_number_generator: &mut impl RngExt,
)where
BorrowedSelf: BitLength,
§impl<Bits, Other, BorrowedSelf, BorrowedOther> BitwisePairMutViaBorrow<Other, BorrowedSelf, BorrowedOther> for Bits
impl<Bits, Other, BorrowedSelf, BorrowedOther> BitwisePairMutViaBorrow<Other, BorrowedSelf, BorrowedOther> for Bits
fn assign(&mut self, other: &Other)
fn bitxor_assign(&mut self, other: &Other)
fn bitand_assign(&mut self, other: &Other)
fn bitor_assign(&mut self, other: &Other)
§impl<T, Other, BorrowedSelf, BorrowedOther> BitwisePairViaBorrow<Other, BorrowedSelf, BorrowedOther> for T
impl<T, Other, BorrowedSelf, BorrowedOther> BitwisePairViaBorrow<Other, BorrowedSelf, BorrowedOther> for T
§impl<T, BorrowedSelf> BitwiseViaBorrow<BorrowedSelf> for T
impl<T, BorrowedSelf> BitwiseViaBorrow<BorrowedSelf> for T
fn index(&self, index: usize) -> bool
fn weight(&self) -> usize
fn parity(&self) -> bool
fn is_zero(&self) -> bool
fn is_unit(&self, index: usize) -> bool
fn support<'a>(&'a self) -> impl SortedIteratorwhere
BorrowedSelf: 'a,
fn max_support(&self) -> Option<usize>
fn min_support(&self) -> Option<usize>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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> ⓘ
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> ⓘ
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 more§impl<'src, T> IntoMaybe<'src, T> for Twhere
T: 'src,
impl<'src, T> IntoMaybe<'src, T> for Twhere
T: 'src,
impl<N> NodeTrait for N
impl<N> NodeTrait for N
impl<T> OrderedSeq<'_, T> for Twhere
T: Clone,
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute] value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi [Quirk] value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<'p, T> Seq<'p, T> for Twhere
T: Clone,
impl<'p, T> Seq<'p, T> for Twhere
T: Clone,
§type Iter<'a> = Once<&'a T>
where
T: 'a
type Iter<'a> = Once<&'a T> where T: 'a
§fn contains(&self, val: &T) -> boolwhere
T: PartialEq,
fn contains(&self, val: &T) -> boolwhere
T: PartialEq,
§fn to_maybe_ref<'b>(item: <T as Seq<'p, T>>::Item<'b>) -> Maybe<T, &'p T>where
'p: 'b,
fn to_maybe_ref<'b>(item: <T as Seq<'p, T>>::Item<'b>) -> Maybe<T, &'p T>where
'p: 'b,
MaybeRef].