Struct UnsafeTypedArray

Source
pub struct UnsafeTypedArray<'a, T: 'a>(/* private fields */);
Expand description

A wrapper type for exposing raw Rust slices as TypedArrays at zero cost without copying.

The only thing you can do with this is to pass it to the js! macro.

Using this is highly unsafe! After you pass it to the js! macro you must use it before triggering any Rust code whatsoever, either directly or indirectly. Breaking this rule will result in undefined behavior!

§Examples

let slice: &[u8] = &[1, 2, 3];
let slice = unsafe { UnsafeTypedArray::new( slice ) };
js!(
    var slice = @{slice};
    // `slice` is an Uint8Array
    var sum = slice[0] + slice[1] + slice[2];
    console.log( "Sum of array elements: ", sum );
);

Implementations§

Source§

impl<'a, T> UnsafeTypedArray<'a, T>

Source

pub unsafe fn new(slice: &'a [T]) -> Self

Creates a new UnsafeTypedArray.

Even though this function is marked as unsafe the unsafely only comes into play after you pass it to the js! macro.

Trait Implementations§

Source§

impl<'a, T> Debug for UnsafeTypedArray<'a, T>

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'r> JsSerialize for UnsafeTypedArray<'r, f32>

Source§

impl<'r> JsSerialize for UnsafeTypedArray<'r, f64>

Source§

impl<'r> JsSerialize for UnsafeTypedArray<'r, i16>

Source§

impl<'r> JsSerialize for UnsafeTypedArray<'r, i32>

Source§

impl<'r> JsSerialize for UnsafeTypedArray<'r, i8>

Source§

impl<'r> JsSerialize for UnsafeTypedArray<'r, u16>

Source§

impl<'r> JsSerialize for UnsafeTypedArray<'r, u32>

Source§

impl<'r> JsSerialize for UnsafeTypedArray<'r, u8>

Auto Trait Implementations§

§

impl<'a, T> Freeze for UnsafeTypedArray<'a, T>

§

impl<'a, T> RefUnwindSafe for UnsafeTypedArray<'a, T>
where T: RefUnwindSafe,

§

impl<'a, T> Send for UnsafeTypedArray<'a, T>
where T: Sync,

§

impl<'a, T> Sync for UnsafeTypedArray<'a, T>
where T: Sync,

§

impl<'a, T> Unpin for UnsafeTypedArray<'a, T>

§

impl<'a, T> UnwindSafe for UnsafeTypedArray<'a, T>
where T: RefUnwindSafe,

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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, U> Into<U> for T
where 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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.
Source§

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

Source§

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.