pub struct ArrayRefMut<'a> { /* private fields */ }Expand description
Mutable reference to a data array in metatensor-core
The data array can come from any origin, this struct provides facilities to
access data that was created through the crate::Array trait, and in
particular as ndarray::ArrayD instances.
Implementations§
Source§impl<'a> ArrayRefMut<'a>
impl<'a> ArrayRefMut<'a>
Sourcepub unsafe fn from_raw(array: mts_array_t) -> ArrayRefMut<'a>
pub unsafe fn from_raw(array: mts_array_t) -> ArrayRefMut<'a>
Create a new ArrayRefMut from the given raw mts_array_t
This is a VERY unsafe function, creating a lifetime out of thin air,
and allowing mutable access to the mts_array_t. Make sure the lifetime
is actually constrained by the lifetime of the owner of this
mts_array_t; and that the owner is mutably borrowed by this
ArrayRefMut.
Sourcepub fn as_any(&self) -> &dyn Any
pub fn as_any(&self) -> &dyn Any
Get the underlying array as an &dyn Any instance.
This function panics if the array was not created though this crate and
the crate::Array trait.
Sourcepub fn to_any(self) -> &'a dyn Any
pub fn to_any(self) -> &'a dyn Any
Get a reference to the underlying array as an &dyn Any instance,
re-using the same lifetime as the ArrayRefMut.
This function panics if the array was not created though this crate and
the crate::Array trait.
Sourcepub fn to_any_mut(self) -> &'a mut dyn Any
pub fn to_any_mut(self) -> &'a mut dyn Any
Get the underlying array as an &mut dyn Any instance.
This function panics if the array was not created though this crate and
the crate::Array trait.
Sourcepub fn as_ndarray_lock<T>(&self) -> &Arc<RwLock<ArrayD<T>>>where
T: 'static,
pub fn as_ndarray_lock<T>(&self) -> &Arc<RwLock<ArrayD<T>>>where
T: 'static,
Extract the Arc<RwLock<ArrayD<T>>> from this ArrayRef, if it
contains one.
This function will panic if the data in the mts_array_t in this
ArrayRefMut is a different kind of array.
Sourcepub fn to_ndarray_lock<T>(self) -> &'a Arc<RwLock<ArrayD<T>>>where
T: 'static,
pub fn to_ndarray_lock<T>(self) -> &'a Arc<RwLock<ArrayD<T>>>where
T: 'static,
Extract the Arc<RwLock<ArrayD<T>>> from this ArrayRef, if it
contains one, keeping the initial lifetime of the ArrayRef.
This function will panic if the data in the mts_array_t in this
ArrayRefMut is a different kind of array.
Sourcepub fn get_ndarray_mut<T>(self) -> &'a mut ArrayD<T>where
T: 'static,
pub fn get_ndarray_mut<T>(self) -> &'a mut ArrayD<T>where
T: 'static,
Get a mutable reference to the underlying array, consuming this
ArrayRefMut.
Since this array is already guaranteed to be unique through the mutable
borrow, we do not need to lock the RwLock to get access to the
ArrayD.
This function will panic if the data in the mts_array_t in this
ArrayRefMut does not contain an Arc<RwLock<ArrayD<T>>>, or if the
Arc already has multiple strong references.
Sourcepub fn as_raw_mut(&mut self) -> &mut mts_array_t
pub fn as_raw_mut(&mut self) -> &mut mts_array_t
Get a mutable reference to the raw underlying mts_array_t
Sourcepub fn origin(&self) -> Result<mts_data_origin_t, Error>
pub fn origin(&self) -> Result<mts_data_origin_t, Error>
Get the origin of this array.
This corresponds to mts_array_t.origin, but with a more convenient API.
Sourcepub fn device(&self) -> Result<DLDevice, Error>
pub fn device(&self) -> Result<DLDevice, Error>
Get the device of this array.
This corresponds to mts_array_t.device, but with a more convenient API.
Sourcepub fn dtype(&self) -> Result<DLDataType, Error>
pub fn dtype(&self) -> Result<DLDataType, Error>
Get the dtype of this array.
This corresponds to mts_array_t.dtype, but with a more convenient API.
Sourcepub fn as_dlpack(
&self,
device: DLDevice,
stream: Option<i64>,
max_version: DLPackVersion,
) -> Result<DLPackTensor, Error>
pub fn as_dlpack( &self, device: DLDevice, stream: Option<i64>, max_version: DLPackVersion, ) -> Result<DLPackTensor, Error>
Get a dlpk::DLPackTensor from this array, if supported by the underlying data.
This corresponds to mts_array_t.as_dlpack, but with a more convenient API.
Sourcepub fn shape(&self) -> Result<&[usize], Error>
pub fn shape(&self) -> Result<&[usize], Error>
Get the shape of this array.
This corresponds to mts_array_t.shape, but with a more convenient API.
Sourcepub fn reshape(&mut self, shape: &[usize]) -> Result<(), Error>
pub fn reshape(&mut self, shape: &[usize]) -> Result<(), Error>
Reshape the data in this array, if supported by the underlying data.
This corresponds to mts_array_t.reshape, but with a more convenient API.
Sourcepub fn swap_axes(&mut self, axis_1: usize, axis_2: usize) -> Result<(), Error>
pub fn swap_axes(&mut self, axis_1: usize, axis_2: usize) -> Result<(), Error>
Swap two axes of the data in this array, if supported by the underlying data.
This corresponds to mts_array_t.swap_axes, but with a more convenient API.
Sourcepub fn create(
&self,
shape: &[usize],
fill_value: ArrayRef<'_>,
) -> Result<MtsArray, Error>
pub fn create( &self, shape: &[usize], fill_value: ArrayRef<'_>, ) -> Result<MtsArray, Error>
Create a new array with the same options as this one (dtype, device) and the given shape, filled with zeros.
This corresponds to mts_array_t.create, but with a more convenient API.