Struct wrapped_mono::Array

source ·
pub struct Array<Dim: DimensionTrait, T: InteropSend + InteropRecive + InteropClass>where
    Dim::Lengths: IndexMut<usize> + BorrowMut<[usize]> + Copy,
    <Dim::Lengths as Index<usize>>::Output: BorrowMut<usize>,
    <<Dim as DimensionTrait>::Lengths as Index<usize>>::Output: Sized + Into<usize> + Copy,{ /* private fields */ }
Expand description

Safe, rust representation of MonoArray (a reference to a managed array).

Nullable support

Array<T> is non-nullable on default and will panic when null passed as argument form managed code. For nullable support use Option<Array<T>>.

Implementations§

source§

impl<T: InteropSend + InteropRecive + InteropClass, Dim: DimensionTrait> Array<Dim, T>where Dim::Lengths: IndexMut<usize> + BorrowMut<[usize]> + Copy, <Dim::Lengths as Index<usize>>::Output: BorrowMut<usize>, <<Dim as DimensionTrait>::Lengths as Index<usize>>::Output: Sized + Into<usize> + Copy, <Dim as DimensionTrait>::Lengths: BorrowMut<[usize]>,

source

pub fn get(&self, indices: Dim::Lengths) -> T

Function returning element at index

Arguments
NameTypeDescription
self&SelfArray to read from.
indices[usize;DIMENSIONS as usize]An n-dimensional array containing indices to read value at
Examples
fn some_get_fn(input:&Array<Dim1D,f32>)->f32{
    let a = input.get([0]);  
    let b = input.get([1]);
    a + b
}
fn some_get_fn_2D(input:&Array<Dim2D,f32>)->f32{
    let a = input.get([0,0]);  
    let b = input.get([1,1]);
    let c = input.get([0,1]);
     a + b + c
}
source

pub fn set(&mut self, indices: Dim::Lengths, value: T)

Function setting element at index of Array to value

Arguments
NameTypeDescription
self&SelfArray to write value to.
indices[usize;DIMENSIONS as usize]An n-dimensional array containing indices to set value at
valueTvalue to set element at index to.
Example
fn set_fn(input:&mut Array<Dim1D,i32>){
    input.set([0],0);
    input.set([1],1);
}
fn set_fn_2D(input:&mut Array<Dim2D,i32>){
    input.set([0,0],0);
    input.set([1,1],1);
    input.set([1,0],9);
}
source

pub fn len(&self) -> usize

Function returning 1D length of the array(element count).

Arguments
NameTypeDescription
self&SelfArray to get length of
Example
fn get_avg(input:&Array<Dim1D,f32>)->f32{
    let mut sum = 0.0;
    for i in 0..input.len(){
        sum += input.get([i]);
    }
    sum/(input.len() as f32)
}
source

pub fn is_empty(&self) -> bool

Checks if Array is empty.

Arguments
NameTypeDescription
self&SelfArray to check if is empty
source

pub fn to_object(&self) -> Object

Converts Array to Object

Arguments
NameTypeDescription
self&Arrayarray to cast to object
source

pub fn new(domain: &Domain, size: &Dim::Lengths) -> Self

Allocate new array in domain with size DIMENSIONS with elements of type class.

Example
let arr_len = 8;
let arr = Array::<Dim1D,i32>::new(&domain,&[arr_len]);
assert!(arr.len() == arr_len);
Arguments
NameTypeDescription
domain&Domaindomain to create array in
size&[usize;DIMENSIONS as usize]size of the array to create
source

pub fn clone_managed_array(&self) -> Self

Clones managed array, not the reference to it.

Arguments
NameTypeDescription
self&ArrayArray to clone
source

pub fn get_class() -> Class

Returns class of this array

source

pub fn get_lenghts(&self) -> Dim::Lengths

Returns n-dimensional length of this array.

Arguments
NameTypeDescription
self&ArrayArray to get size of

Trait Implementations§

source§

impl<Dim: DimensionTrait, T: InteropSend + InteropRecive + InteropClass> Clone for Array<Dim, T>where Dim::Lengths: IndexMut<usize> + BorrowMut<[usize]> + Copy, <Dim::Lengths as Index<usize>>::Output: BorrowMut<usize>, <<Dim as DimensionTrait>::Lengths as Index<usize>>::Output: Sized + Into<usize> + Copy,

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: InteropSend + InteropRecive + InteropClass + Clone> From<&[T]> for Array<Dim1D, T>

source§

fn from(src: &[T]) -> Self

Converts to this type from the input type.
source§

impl<Dim: DimensionTrait, T: InteropSend + InteropRecive + InteropClass> InteropClass for Array<Dim, T>where Dim::Lengths: IndexMut<usize> + BorrowMut<[usize]> + Copy, <Dim::Lengths as Index<usize>>::Output: BorrowMut<usize>, <<Dim as DimensionTrait>::Lengths as Index<usize>>::Output: Sized + Into<usize> + Copy,

source§

impl<Dim: DimensionTrait, T: InteropSend + InteropRecive + InteropClass> ObjectTrait for Array<Dim, T>where Dim::Lengths: IndexMut<usize> + BorrowMut<[usize]> + Copy, <Dim::Lengths as Index<usize>>::Output: BorrowMut<usize>, <<Dim as DimensionTrait>::Lengths as Index<usize>>::Output: Sized + Into<usize> + Copy,

source§

fn get_ptr(&self) -> *mut MonoObject

Gets the internal [MonoObject] pointer.
source§

unsafe fn from_ptr_unchecked(ptr: *mut MonoObject) -> Self

Creates new instance of Self from *mut [MonoObject]. Pointer is guaranteed to be not null, and of type which can be assigned to managed type represented by Self. Read more
source§

fn cast<Target: ObjectTrait>(&self) -> Option<Target>

source§

unsafe fn from_ptr(obj_ptr: *mut MonoObject) -> Option<Self>

Creates new instance of Self from *mut [MonoObject]. Returns None if either obj_ptr is null OR object obj_ptr points to is of a type which does not derive from the managed type Self represents. Read more
source§

fn hash(&self) -> i32

get hash of this object: This hash is not based on values of objects fields, and differs from result of calling object.GetHash() Read more
source§

fn get_domain(&self) -> Domain

get Domain this object exists in. Read more
source§

fn get_size(&self) -> u32

get size of managed object referenced by self in bytes. Does include builtin hidden data. Read more
source§

fn get_class(&self) -> Class

Returns Class of this object. NOTE: This is function returns the class of the underlying object, not class represented by Self. This means that class returned from get_class may be a class derived from class Self represents. Read more
source§

fn to_mstring(&self) -> Result<Option<MString>, Exception>

Returns result of calling ToString on this Object. Read more
source§

impl<Dim: DimensionTrait, T: InteropSend + InteropRecive + InteropClass, O: ObjectTrait> PartialEq<O> for Array<Dim, T>where Dim::Lengths: IndexMut<usize> + BorrowMut<[usize]> + Copy, <Dim::Lengths as Index<usize>>::Output: BorrowMut<usize>, <<Dim as DimensionTrait>::Lengths as Index<usize>>::Output: Sized + Into<usize> + Copy,

source§

fn eq(&self, other: &O) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

§

impl<Dim, T> RefUnwindSafe for Array<Dim, T>where T: RefUnwindSafe, <Dim as DimensionTrait>::Lengths: RefUnwindSafe,

§

impl<Dim, T> Send for Array<Dim, T>where T: Send, <Dim as DimensionTrait>::Lengths: Send,

§

impl<Dim, T> Sync for Array<Dim, T>where T: Sync, <Dim as DimensionTrait>::Lengths: Sync,

§

impl<Dim, T> Unpin for Array<Dim, T>where T: Unpin, <Dim as DimensionTrait>::Lengths: Unpin,

§

impl<Dim, T> UnwindSafe for Array<Dim, T>where T: UnwindSafe, <Dim as DimensionTrait>::Lengths: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> InteropRecive for Twhere T: ObjectTrait,

§

type SourceType = *mut _MonoObject

Souce type used by MonoRuntime when calling functions exposed by add_internal_call, or getting a value back from a method, that can be converted to a rust type.
source§

fn get_rust_rep(src: <T as InteropRecive>::SourceType) -> T

Function converting Self::SourceType to type implementing InteropRecive trait.
source§

impl<T> InteropSend for Twhere T: ObjectTrait,

§

type TargetType = *mut _MonoObject

Type used by MonoRuntime, that type implementing InteropSend trait should be converted to when returning it to MonoRuntime.
source§

fn get_mono_rep(src: T) -> <T as InteropSend>::TargetType

Function converting type implementing InteropRecive trait to type that should be returned to MonoRuntime.
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.