Struct pasture_core::containers::PointView
source · pub struct PointView<'a, 'b, B: BorrowedBuffer<'a> + ?Sized, 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]
).
Depending on the memory layout of the buffer type B
, this view supports accessing the point data
only by value (for non-interleaved buffers) or by immutable borrow (for interleaved buffers).
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> + ?Sized, T: PointType> PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: BorrowedBuffer<'a> + ?Sized, T: PointType> PointView<'a, 'b, B, T>where
'a: 'b,
source§impl<'a, 'b, B: InterleavedBuffer<'a> + ?Sized, T: PointType> PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: InterleavedBuffer<'a> + ?Sized, 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> + ?Sized, T: Clone + PointType> Clone for PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: Clone + BorrowedBuffer<'a> + ?Sized, T: Clone + PointType> Clone for PointView<'a, 'b, B, T>where
'a: 'b,
source§impl<'a, 'b, B: Debug + BorrowedBuffer<'a> + ?Sized, T: Debug + PointType> Debug for PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: Debug + BorrowedBuffer<'a> + ?Sized, T: Debug + PointType> Debug for PointView<'a, 'b, B, T>where
'a: 'b,
source§impl<'a, 'b, B: BorrowedBuffer<'a> + ?Sized + 'a, T: PointType> IntoIterator for PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: BorrowedBuffer<'a> + ?Sized + 'a, T: PointType> IntoIterator for PointView<'a, 'b, B, T>where
'a: 'b,
source§impl<'a, 'b, 'c, 'd, B1: BorrowedBuffer<'a> + ?Sized + 'a, B2: BorrowedBuffer<'c> + ?Sized + 'c, T: PointType + PartialEq> PartialEq<PointView<'c, 'd, B2, T>> for PointView<'a, 'b, B1, T>
impl<'a, 'b, 'c, 'd, B1: BorrowedBuffer<'a> + ?Sized + 'a, B2: BorrowedBuffer<'c> + ?Sized + 'c, T: PointType + PartialEq> PartialEq<PointView<'c, 'd, B2, T>> for PointView<'a, 'b, B1, T>
impl<'a, 'b, B: Copy + BorrowedBuffer<'a> + ?Sized, T: Copy + PointType> Copy for PointView<'a, 'b, B, T>where
'a: 'b,
impl<'a, 'b, B: BorrowedBuffer<'a> + ?Sized + 'a, T: PointType + Eq> Eq for PointView<'a, 'b, B, T>
Auto Trait Implementations§
impl<'a, 'b, B, T> Freeze for PointView<'a, 'b, B, T>where
B: ?Sized,
impl<'a, 'b, B, T> RefUnwindSafe for PointView<'a, 'b, B, T>
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>where
B: ?Sized,
impl<'a, 'b, B, T> UnwindSafe for PointView<'a, 'b, B, T>
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<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.