pub struct JsValue(/* private fields */);Expand description
The type of any JavaScript value, i.e., the root of all types.
The JsValue type is a catch-all type that sits at the top of the
JavaScript type hierarchy.
All JavaScript values can be safely and statically
upcast to JsValue; by contrast, a
downcast of a JsValue to another type
requires a runtime check.
(For TypeScript programmers, this can be thought of as similar to TypeScript’s
unknown
type.)
The JsValue type can be useful for generic, dynamic, or otherwise
hard-to-express API signatures, such as overloaded types:
// Takes a string and adds the specified padding to the left.
// If the padding is a string, it's added as-is.
// If the padding is a number, then that number of spaces is added.
fn pad_left(mut cx: FunctionContext) -> JsResult<JsString> {
let string: Handle<JsString> = cx.argument(0)?;
let padding: Handle<JsValue> = cx.argument(1)?;
let padding: String = if let Ok(str) = padding.downcast::<JsString, _>(&mut cx) {
str.value(&mut cx)
} else if let Ok(num) = padding.downcast::<JsNumber, _>(&mut cx) {
" ".repeat(num.value(&mut cx) as usize)
} else {
return cx.throw_type_error("expected string or number");
};
let new_value = padding + &string.value(&mut cx);
Ok(cx.string(&new_value))
}Trait Implementations§
Source§impl Value for JsValue
impl Value for JsValue
Auto Trait Implementations§
impl Freeze for JsValue
impl RefUnwindSafe for JsValue
impl !Send for JsValue
impl !Sync for JsValue
impl Unpin for JsValue
impl UnwindSafe for JsValue
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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