Struct meshx::attrib::IndirectData
source · pub struct IndirectData { /* private fields */ }
Expand description
Mesh attribute data.
This stores unique values shared among mesh elements via smart pointers. This type doesn’t store the location of the attribute.
Implementations§
source§impl IndirectData
impl IndirectData
sourcepub fn check<T: Any>(&self) -> Result<&Self, Error>
pub fn check<T: Any>(&self) -> Result<&Self, Error>
Get the type data stored within this attribute
sourcepub fn check_mut<T: Any>(&mut self) -> Result<&mut Self, Error>
pub fn check_mut<T: Any>(&mut self) -> Result<&mut Self, Error>
Get the mutable typed data stored within this attribute
sourcepub fn element_type_id(&self) -> TypeId
pub fn element_type_id(&self) -> TypeId
Get the type data stored within this attribute
sourcepub fn element_size(&self) -> usize
pub fn element_size(&self) -> usize
Get the number of bytes per element stored in this attribute.
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Number of elements stored by this attribute. This is the same as the number of elements in the associated topology.
sourcepub fn byte_len(&self) -> usize
pub fn byte_len(&self) -> usize
Number of bytes stored by this attribute. This is the same as the number of elements multiplied by the size of each element.
sourcepub unsafe fn get_unchecked_ref<T: Any>(&self, i: usize) -> &T
pub unsafe fn get_unchecked_ref<T: Any>(&self, i: usize) -> &T
Get a const
reference to the i
’th attribute value.
Safety
Calling this method with an out-of-bounds index is undefined behavior even if the output is
not used. For a safe alternative use the get_ref
method.
sourcepub unsafe fn get_unchecked_mut<T: Any>(&mut self, i: usize) -> &mut T
pub unsafe fn get_unchecked_mut<T: Any>(&mut self, i: usize) -> &mut T
Get a mutable reference to the i
’th attribute value.
Safety
Calling this method with an out-of-bounds index is undefined behavior even if the output is
not used. For a safe alternative use the get_mut
method.
sourcepub fn data_ref(&self) -> &HDataVec
👎Deprecated since 0.2.1: Please use data instead.
pub fn data_ref(&self) -> &HDataVec
Get a reference to the internal value vector.
sourcepub fn data_mut(&mut self) -> &mut HDataVec
pub fn data_mut(&mut self) -> &mut HDataVec
Get a mutable reference to the internal value vector.
sourcepub fn into_data(self) -> HDataVec
pub fn into_data(self) -> HDataVec
Convert this attribute into the underlying buffer. This consumes the attribute.
sourcepub fn extend_by(&mut self, n: usize)
pub fn extend_by(&mut self, n: usize)
Extend this attribute by n
elements. Effectively, this function appends the default
element n
number of times to this attribute.
sourcepub fn rotate_left(&mut self, mid: usize)
pub fn rotate_left(&mut self, mid: usize)
Rotates elements of this attribute in-place to the left.
Rotate this attribute in-place such that the first mid
elements of the underlying buffer
move to the end while the last self.len() - mid
elements move to the front. After
calling rotate_left
, the element previously at index mid
will become the first element
in the slice.
sourcepub fn rotate_right(&mut self, k: usize)
pub fn rotate_right(&mut self, k: usize)
Rotates elements of this attribute in-place to the right.
Rotate this attribute in-place such that the first self.len() - k
elements of the
underlying buffer move to the end while the last k
elements move to the front. After
calling rotate_right
, the element previously at index self.len() - k
will become the
first element in the slice.
sourcepub fn with_size<T: AttributeValueHash>(n: usize, def: T) -> Self
pub fn with_size<T: AttributeValueHash>(n: usize, def: T) -> Self
Construct an attribute with a given size.
sourcepub fn from_vec<T: AttributeValueHash + Default>(
vec: Vec<T>,
cache: &mut AttribValueCache
) -> Self
pub fn from_vec<T: AttributeValueHash + Default>( vec: Vec<T>, cache: &mut AttribValueCache ) -> Self
Construct an attribute from a given Vec<T>
of data.
sourcepub fn from_slice<T: AttributeValueHash + Default>(
buf: &[T],
cache: &mut AttribValueCache
) -> Self
pub fn from_slice<T: AttributeValueHash + Default>( buf: &[T], cache: &mut AttribValueCache ) -> Self
Construct an attribute from a given slice of data, by copying the data.
sourcepub fn duplicate_empty(&self) -> Self
pub fn duplicate_empty(&self) -> Self
Construct a new empty attribute with the same values and default element as self
.
sourcepub fn duplicate_with(
&self,
dup_data: impl FnOnce(HDataSlice<'_>) -> VecDyn<dyn HasAttributeValue>
) -> Self
pub fn duplicate_with( &self, dup_data: impl FnOnce(HDataSlice<'_>) -> VecDyn<dyn HasAttributeValue> ) -> Self
Construct a new attribute with the same values and default element as self
.
sourcepub fn duplicate_with_len(
&self,
len: usize,
init: impl FnOnce(HDataSliceMut<'_>, HDataSlice<'_>)
) -> Self
pub fn duplicate_with_len( &self, len: usize, init: impl FnOnce(HDataSliceMut<'_>, HDataSlice<'_>) ) -> Self
Construct a new attribute with the same values and default element as self
.
The attribute is first initialized with the default value by allocating len
default
elements. Then the newly created buffer is expected to be modified by the init
function.
The output HDataVec
must be composed of values from the original HDataVec
or the
default element.
The init
function is only allowed to clone data from the second argument into the first.
Adding new data will cause this attribute to go out of sync with the cache.
sourcepub fn clone_into_vec<T: AttributeValueHash>(&self) -> Result<Vec<T>, Error>
pub fn clone_into_vec<T: AttributeValueHash>(&self) -> Result<Vec<T>, Error>
Convert the data stored by this attribute into a vector of the same size.
sourcepub fn iter<T: Any>(&self) -> Result<impl Iterator<Item = &T>, Error>
pub fn iter<T: Any>(&self) -> Result<impl Iterator<Item = &T>, Error>
Produce an iterator over the underlying data elements.
sourcepub fn update_with<T, F>(
&mut self,
f: F,
cache: &mut AttribValueCache
) -> Result<&mut Self, Error>
pub fn update_with<T, F>( &mut self, f: F, cache: &mut AttribValueCache ) -> Result<&mut Self, Error>
Iterate over all the value in this attribute and update them as needed.
This function takes a closure which takes an index and a smart pointer to the stored value and produces an optional new value. The new value is then used to update the attribute using the provided cache.
sourcepub fn set_at<'a, T>(
&'a mut self,
i: usize,
new_value: T,
cache: &'a mut AttribValueCache
) -> Result<&'a mut Self, Error>where
T: AttributeValueHash,
pub fn set_at<'a, T>(
&'a mut self,
i: usize,
new_value: T,
cache: &'a mut AttribValueCache
) -> Result<&'a mut Self, Error>where
T: AttributeValueHash,
Set the value of a particular element.
sourcepub fn set_value_at<'a>(
&'a mut self,
i: usize,
new_value: &HValue,
cache: &'a mut AttribValueCache
) -> Result<&'a mut Self, Error>
pub fn set_value_at<'a>( &'a mut self, i: usize, new_value: &HValue, cache: &'a mut AttribValueCache ) -> Result<&'a mut Self, Error>
Set the value of a particular element.
sourcepub fn push_cloned(
&mut self,
new_value_ref: HValueRef<'_>,
cache: &mut AttribValueCache
) -> Result<&mut Self, Error>
pub fn push_cloned( &mut self, new_value_ref: HValueRef<'_>, cache: &mut AttribValueCache ) -> Result<&mut Self, Error>
Push a value onto the underlying data buffer.
sourcepub fn as_rc_slice<T: Any>(&self) -> Result<&[Irc<T>], Error>
pub fn as_rc_slice<T: Any>(&self) -> Result<&[Irc<T>], Error>
Produce a slice to the underlying data referenced by smart pointers.
sourcepub fn as_mut_rc_slice<T: Any>(&mut self) -> Result<&mut [Irc<T>], Error>
pub fn as_mut_rc_slice<T: Any>(&mut self) -> Result<&mut [Irc<T>], Error>
Produce a mutable slice to the underlying data referenced by smart pointers.
sourcepub fn default_element(&self) -> HValueRef<'_>
pub fn default_element(&self) -> HValueRef<'_>
Get a reference to the default element.
Trait Implementations§
source§impl Clone for IndirectData
impl Clone for IndirectData
source§fn clone(&self) -> IndirectData
fn clone(&self) -> IndirectData
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for IndirectData
impl Debug for IndirectData
source§impl PartialEq for IndirectData
impl PartialEq for IndirectData
source§fn eq(&self, other: &IndirectData) -> bool
fn eq(&self, other: &IndirectData) -> bool
self
and other
values to be equal, and is used
by ==
.impl StructuralPartialEq for IndirectData
Auto Trait Implementations§
impl RefUnwindSafe for IndirectData
impl Send for IndirectData
impl Sync for IndirectData
impl Unpin for IndirectData
impl UnwindSafe for IndirectData
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> CloneBytes for Twhere
T: Clone + 'static,
impl<T> CloneBytes for Twhere
T: Clone + 'static,
unsafe fn clone_bytes(src: &[MaybeUninit<u8>]) -> Box<[MaybeUninit<u8>]>
unsafe fn clone_from_bytes(dst: &mut [MaybeUninit<u8>], src: &[MaybeUninit<u8>])
unsafe fn clone_into_raw_bytes( src: &[MaybeUninit<u8>], dst: &mut [MaybeUninit<u8>] )
source§impl<T> DebugBytes for Twhere
T: Debug + 'static,
impl<T> DebugBytes for Twhere
T: Debug + 'static,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> DropBytes for Twhere
T: 'static,
impl<T> DropBytes for Twhere
T: 'static,
unsafe fn drop_bytes(bytes: &mut [MaybeUninit<u8>])
source§impl<'a, S, I> Get<'a, I> for Swhere
I: GetIndex<'a, S>,
impl<'a, S, I> Get<'a, I> for Swhere
I: GetIndex<'a, S>,
type Output = <I as GetIndex<'a, S>>::Output
fn get(&self, idx: I) -> Option<<I as GetIndex<'a, S>>::Output>
source§fn at(&self, idx: I) -> Self::Output
fn at(&self, idx: I) -> Self::Output
get
that will panic if the equivalent get
call is None
,
which typically means that the given index is out of bounds. Read moresource§unsafe fn at_unchecked(&self, idx: I) -> Self::Output
unsafe fn at_unchecked(&self, idx: I) -> Self::Output
source§impl<S, I> Isolate<I> for Swhere
I: IsolateIndex<S>,
impl<S, I> Isolate<I> for Swhere
I: IsolateIndex<S>,
source§impl<T> PartialEqBytes for Twhere
T: PartialEq + 'static,
impl<T> PartialEqBytes for Twhere
T: PartialEq + 'static,
unsafe fn eq_bytes(a: &[MaybeUninit<u8>], b: &[MaybeUninit<u8>]) -> bool
§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T, N> PushArrayToVec<N> for T
impl<T, N> PushArrayToVec<N> 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.