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 for LatticeLinkCanonical<D>
impl<const D: usize> PartialEq for LatticeLinkCanonical<D>
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> StructuralPartialEq for LatticeLinkCanonical<D>
Auto Trait Implementations§
impl<const D: usize> Freeze for LatticeLinkCanonical<D>
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§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
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>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.