Struct lattice_qcd_rs::lattice::LatticeLinkCanonical
source · pub struct LatticeLinkCanonical<const D: usize> { /* private fields */ }
Expand description
A canonical link of a lattice. It contain a position and a direction.
The direction should always be positive.
By itself the link does not store data about the lattice. Hence most function require a LatticeCyclic
.
It also means that there is no guarantee that the object is inside a lattice.
You can use modulus over the elements to use inside a lattice.
This object can be used to safely index in a std::collections::HashMap
Implementations§
source§impl<const D: usize> LatticeLinkCanonical<D>
impl<const D: usize> LatticeLinkCanonical<D>
sourcepub const fn new(from: LatticePoint<D>, dir: Direction<D>) -> Option<Self>
pub const fn new(from: LatticePoint<D>, dir: Direction<D>) -> Option<Self>
Try create a LatticeLinkCanonical. If the dir is negative it fails.
To guaranty creating an element see LatticeCyclic::link_canonical. The creation of an element this ways does not guaranties that the element is inside a lattice.
Example
let l = LatticeLinkCanonical::new(LatticePoint::new([0; 4].into()), DirectionEnum::XNeg.into());
assert_eq!(l, None);
let l = LatticeLinkCanonical::new(LatticePoint::new([0; 4].into()), DirectionEnum::XPos.into());
assert!(l.is_some());
sourcepub const fn pos(&self) -> &LatticePoint<D>
pub const fn pos(&self) -> &LatticePoint<D>
Position of the link.
sourcepub fn pos_mut(&mut self) -> &mut LatticePoint<D>
pub fn pos_mut(&mut self) -> &mut LatticePoint<D>
Get a mutable reference on the position of the link.
sourcepub fn set_dir(&mut self, dir: Direction<D>)
pub fn set_dir(&mut self, dir: Direction<D>)
Set the direction to dir
Example
let mut lattice_link_canonical =
LatticeLinkCanonical::new(LatticePoint::new([0; 4].into()), DirectionEnum::YPos.into())
.ok_or(ImplementationError::OptionWithUnexpectedNone)?;
lattice_link_canonical.set_dir(DirectionEnum::XPos.into());
assert_eq!(*lattice_link_canonical.dir(), DirectionEnum::XPos.into());
Panic
panic if a negative direction is given.
lattice_link_canonical.set_dir(DirectionEnum::XNeg.into()); // Panics !
sourcepub fn set_dir_positive(&mut self, dir: Direction<D>)
pub fn set_dir_positive(&mut self, dir: Direction<D>)
Set the direction using positive direction. i.e. if a direction -x
is passed
the direction assigned will be +x
.
This is equivalent to link.set_dir(dir.to_positive())
.
Trait Implementations§
source§impl<const D: usize> Clone for LatticeLinkCanonical<D>
impl<const D: usize> Clone for LatticeLinkCanonical<D>
source§fn clone(&self) -> LatticeLinkCanonical<D>
fn clone(&self) -> LatticeLinkCanonical<D>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<const D: usize> Debug for LatticeLinkCanonical<D>
impl<const D: usize> Debug for LatticeLinkCanonical<D>
source§impl<'de, const D: usize> Deserialize<'de> for LatticeLinkCanonical<D>
impl<'de, const D: usize> Deserialize<'de> for LatticeLinkCanonical<D>
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
source§impl<const D: usize> Display for LatticeLinkCanonical<D>
impl<const D: usize> Display for LatticeLinkCanonical<D>
source§impl<const D: usize> From<&LatticeLinkCanonical<D>> for LatticeLink<D>
impl<const D: usize> From<&LatticeLinkCanonical<D>> for LatticeLink<D>
source§fn from(l: &LatticeLinkCanonical<D>) -> Self
fn from(l: &LatticeLinkCanonical<D>) -> Self
source§impl<const D: usize> From<LatticeLinkCanonical<D>> for LatticeLink<D>
impl<const D: usize> From<LatticeLinkCanonical<D>> for LatticeLink<D>
source§fn from(l: LatticeLinkCanonical<D>) -> Self
fn from(l: LatticeLinkCanonical<D>) -> Self
source§impl<const D: usize> Hash for LatticeLinkCanonical<D>
impl<const D: usize> Hash for LatticeLinkCanonical<D>
source§impl<const D: usize> LatticeElementToIndex<D> for LatticeLinkCanonical<D>
impl<const D: usize> LatticeElementToIndex<D> for LatticeLinkCanonical<D>
source§fn to_index(&self, l: &LatticeCyclic<D>) -> usize
fn to_index(&self, l: &LatticeCyclic<D>) -> usize
source§impl<const D: usize> PartialEq<LatticeLinkCanonical<D>> for LatticeLinkCanonical<D>
impl<const D: usize> PartialEq<LatticeLinkCanonical<D>> for LatticeLinkCanonical<D>
source§fn eq(&self, other: &LatticeLinkCanonical<D>) -> bool
fn eq(&self, other: &LatticeLinkCanonical<D>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<const D: usize> Serialize for LatticeLinkCanonical<D>
impl<const D: usize> Serialize for LatticeLinkCanonical<D>
impl<const D: usize> Copy for LatticeLinkCanonical<D>
impl<const D: usize> Eq for LatticeLinkCanonical<D>
impl<const D: usize> StructuralEq for LatticeLinkCanonical<D>
impl<const D: usize> StructuralPartialEq for LatticeLinkCanonical<D>
Auto Trait Implementations§
impl<const D: usize> RefUnwindSafe for LatticeLinkCanonical<D>
impl<const D: usize> Send for LatticeLinkCanonical<D>
impl<const D: usize> Sync for LatticeLinkCanonical<D>
impl<const D: usize> Unpin for LatticeLinkCanonical<D>
impl<const D: usize> UnwindSafe for LatticeLinkCanonical<D>
Blanket Implementations§
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.