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.