Struct pasture_core::containers::PointView
source · pub struct PointView<'a, 'b, B: BorrowedBuffer<'a>, T: PointType>where
'a: 'b,{ /* private fields */ }
Expand description
A strongly typed view over the point data of a buffer. This allows accessing the point data in
the buffer using type T
instead of only through raw memory (i.e. as &[u8]
). This type makes
no assumptions about the memory layout of the underlying buffer, so it only provides access to
the point data by value. The PointView
supports no type conversion, so T::layout()
must match
the PointLayout
of the buffer. You cannot create instances of PointView
directly but instead
have to use BorrowedBuffer::view
function and its variations, which perform the necessary type
checks internally!
Lifetime bounds
Since the PointView
borrows the buffer internally, and the buffer itself has a borrow lifetime,
PointView
stores two lifetimes so that it can borrow its buffer for a potentially shorter lifetime
'b
than the lifetime 'a
of the buffer itself.
Implementations§
source§impl<'a, 'b, B: BorrowedBuffer<'a>, T: PointType> PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: BorrowedBuffer<'a>, T: PointType> PointView<'a, 'b, B, T>where
'a: 'b,
source§impl<'a, 'b, B: InterleavedBuffer<'a>, T: PointType> PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: InterleavedBuffer<'a>, T: PointType> PointView<'a, 'b, B, T>where
'a: 'b,
sourcepub fn at_ref<'c>(&'c self, index: usize) -> &'c Twhere
'b: 'c,
pub fn at_ref<'c>(&'c self, index: usize) -> &'c Twhere
'b: 'c,
Access the point at index
by reference
Lifetime bounds
Just as the PointView
can borrow its underlying buffer for a shorter lifetime 'b
than
the lifetime 'a
of the buffer, it should be possible to borrow a single point from a PointView
for a shorter lifetime 'c
than the lifetime 'b
of the PointView
, hence the additional
lifetime bounds.
Panics
If index
is out of bounds
sourcepub fn iter<'c>(&'c self) -> PointIteratorByRef<'c, T> ⓘwhere
'b: 'c,
pub fn iter<'c>(&'c self) -> PointIteratorByRef<'c, T> ⓘwhere
'b: 'c,
Return an iterator over strongly typed point data by reference
Trait Implementations§
source§impl<'a, 'b, B: Clone + BorrowedBuffer<'a>, T: Clone + PointType> Clone for PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: Clone + BorrowedBuffer<'a>, T: Clone + PointType> Clone for PointView<'a, 'b, B, T>where
'a: 'b,
source§impl<'a, 'b, B: Debug + BorrowedBuffer<'a>, T: Debug + PointType> Debug for PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: Debug + BorrowedBuffer<'a>, T: Debug + PointType> Debug for PointView<'a, 'b, B, T>where
'a: 'b,
source§impl<'a, 'b, B: BorrowedBuffer<'a> + 'a, T: PointType> IntoIterator for PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: BorrowedBuffer<'a> + 'a, T: PointType> IntoIterator for PointView<'a, 'b, B, T>where
'a: 'b,
source§impl<'a, 'b, 'c, 'd, B1: BorrowedBuffer<'a> + 'a, B2: BorrowedBuffer<'c> + 'c, T: PointType + PartialEq> PartialEq<PointView<'c, 'd, B2, T>> for PointView<'a, 'b, B1, T>
impl<'a, 'b, 'c, 'd, B1: BorrowedBuffer<'a> + 'a, B2: BorrowedBuffer<'c> + 'c, T: PointType + PartialEq> PartialEq<PointView<'c, 'd, B2, T>> for PointView<'a, 'b, B1, T>
impl<'a, 'b, B: Copy + BorrowedBuffer<'a>, T: Copy + PointType> Copy for PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: BorrowedBuffer<'a> + 'a, T: PointType + Eq> Eq for PointView<'a, 'b, B, T>
Auto Trait Implementations§
impl<'a, 'b, B, T> RefUnwindSafe for PointView<'a, 'b, B, T>where
B: RefUnwindSafe,
T: RefUnwindSafe,
impl<'a, 'b, B, T> Send for PointView<'a, 'b, B, T>
impl<'a, 'b, B, T> Sync for PointView<'a, 'b, B, T>
impl<'a, 'b, B, T> Unpin for PointView<'a, 'b, B, T>
impl<'a, 'b, B, T> UnwindSafe for PointView<'a, 'b, B, T>where
B: RefUnwindSafe,
T: RefUnwindSafe,
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
§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.