pub struct HashMapBufferAttributePusher<'a> { /* private fields */ }
Expand description
Helper struct to push point data into a HashMapBuffer
attribute by attribute. This allows constructing a point buffer
from multiple ranges of attribute data, since regular point buffers do not allow pushing just a single attribute into
the buffer, as buffers always have to store complete points (even with columnar memory layout)
Implementations§
source§impl<'a> HashMapBufferAttributePusher<'a>
impl<'a> HashMapBufferAttributePusher<'a>
sourcepub fn push_attribute_range<T: PrimitiveType>(
&mut self,
attribute: &PointAttributeDefinition,
data: &[T]
)
pub fn push_attribute_range<T: PrimitiveType>( &mut self, attribute: &PointAttributeDefinition, data: &[T] )
Push a range of values for the given attribute
into the underlying buffer. The first range of values that
is pushed in this way determines the expected number of points that will be added to the buffer. Consecutive
calls to push_attribute_range
will assert that data.len()
matches the expected count.
Panics
If attribute
is not part of the PointLayout
of the underlying buffer.
If T::data_type()
does not match attribute.datatype()
.
If this is not the first call to push_attribute_range
, and data.len()
does not match the length of the
data that was passed to the first invocation of push_attribute_range
sourcepub fn done(self)
pub fn done(self)
Commit all pushed data into the underlying buffer. This function checks that there is the correct amount
of data for all expected attributes in the PointLayout
of the underlying buffer and will panic otherwise
Panics
If there is missing data for at least one of the attributes in the PointLayout
of the underlying buffer,
i.e. if push_attribute_range
was not called for at least one of these attributes.
Auto Trait Implementations§
impl<'a> RefUnwindSafe for HashMapBufferAttributePusher<'a>
impl<'a> Send for HashMapBufferAttributePusher<'a>
impl<'a> Sync for HashMapBufferAttributePusher<'a>
impl<'a> Unpin for HashMapBufferAttributePusher<'a>
impl<'a> !UnwindSafe for HashMapBufferAttributePusher<'a>
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.