pub struct Handle<'a, V: Value + 'a> { /* private fields */ }
Expand description
A handle to a JavaScript value that is owned by the JavaScript engine.
Implementations§
source§impl<'a, T: Value> Handle<'a, T>
impl<'a, T: Value> Handle<'a, T>
sourcepub fn upcast<U: Value + SuperType<T>>(&self) -> Handle<'a, U>
pub fn upcast<U: Value + SuperType<T>>(&self) -> Handle<'a, U>
Safely upcast a handle to a supertype.
This method does not require an execution context because it only copies a handle.
sourcepub fn is_a<'b, U: Value, C: Context<'b>>(&self, cx: &mut C) -> bool
pub fn is_a<'b, U: Value, C: Context<'b>>(&self, cx: &mut C) -> bool
Tests whether this value is an instance of the given type.
§Example:
let v: Handle<JsValue> = cx.number(17).upcast();
v.is_a::<JsString, _>(&mut cx); // false
v.is_a::<JsNumber, _>(&mut cx); // true
v.is_a::<JsValue, _>(&mut cx); // true
sourcepub fn downcast<'b, U: Value, C: Context<'b>>(
&self,
cx: &mut C,
) -> DowncastResult<'a, T, U>
pub fn downcast<'b, U: Value, C: Context<'b>>( &self, cx: &mut C, ) -> DowncastResult<'a, T, U>
Attempts to downcast a handle to another type, which may fail. A failure
to downcast does not throw a JavaScript exception, so it’s OK to
continue interacting with the JS engine if this method produces an Err
result.
sourcepub fn downcast_or_throw<'b, U: Value, C: Context<'b>>(
&self,
cx: &mut C,
) -> JsResult<'a, U>
pub fn downcast_or_throw<'b, U: Value, C: Context<'b>>( &self, cx: &mut C, ) -> JsResult<'a, U>
Attempts to downcast a handle to another type, raising a JavaScript TypeError
exception on failure. This method is a convenient shorthand, equivalent to
self.downcast::<U>().or_throw::<C>(cx)
.
pub fn strict_equals<'b, U: Value, C: Context<'b>>( &self, cx: &mut C, other: Handle<'b, U>, ) -> bool
source§impl<'cx> Handle<'cx, JsArrayBuffer>
impl<'cx> Handle<'cx, JsArrayBuffer>
sourcepub fn region<T: Binary>(&self, offset: usize, len: usize) -> Region<'cx, T>
pub fn region<T: Binary>(&self, offset: usize, len: usize) -> Region<'cx, T>
Returns a Region
representing a typed
region of this buffer, starting at offset
and containing len
elements
of type T
.
The region is not checked for validity by this method. Regions are only validated when they are converted to typed arrays.
§Example
let buf: Handle<JsArrayBuffer> = cx.argument(0)?;
let region = buf.region::<u32>(64, 8);
println!("offset={}, len={}, size={}", region.offset(), region.len(), region.size());
See the Region
documentation for more information.
Trait Implementations§
source§impl<'a, K: Value> PropertyKey for Handle<'a, K>
impl<'a, K: Value> PropertyKey for Handle<'a, K>
source§impl<'cx, V> TryFromJs<'cx> for Handle<'cx, V>where
V: Value,
impl<'cx, V> TryFromJs<'cx> for Handle<'cx, V>where
V: Value,
type Error = TypeExpected<V>
source§fn try_from_js(
cx: &mut Cx<'cx>,
v: Handle<'cx, JsValue>,
) -> NeonResult<Result<Self, Self::Error>>
fn try_from_js( cx: &mut Cx<'cx>, v: Handle<'cx, JsValue>, ) -> NeonResult<Result<Self, Self::Error>>
impl<'a, V: Value> Copy for Handle<'a, V>
Auto Trait Implementations§
impl<'a, V> Freeze for Handle<'a, V>where
<V as TransparentNoCopyWrapper>::Inner: Freeze,
impl<'a, V> RefUnwindSafe for Handle<'a, V>where
<V as TransparentNoCopyWrapper>::Inner: RefUnwindSafe,
V: RefUnwindSafe,
impl<'a, V> Send for Handle<'a, V>
impl<'a, V> Sync for Handle<'a, V>
impl<'a, V> Unpin for Handle<'a, V>where
<V as TransparentNoCopyWrapper>::Inner: Unpin,
impl<'a, V> UnwindSafe for Handle<'a, V>where
<V as TransparentNoCopyWrapper>::Inner: UnwindSafe,
V: RefUnwindSafe,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more