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); // trueSourcepub 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, T: 'static> Handle<'cx, JsBox<T>>
impl<'cx, T: 'static> Handle<'cx, JsBox<T>>
Sourcepub fn as_inner(&self) -> &'cx T
pub fn as_inner(&self) -> &'cx T
Gets a reference to the inner value of a JsBox. This method is similar to
dereferencing a JsBox (e.g., &*boxed), but the lifetime
is safely extended to 'cx.
See also JsBox::deref.
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§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