Symbol

Struct Symbol 

Source
pub struct Symbol { /* private fields */ }
Expand description

JavaScript Symbol type.

Symbols are a primitive data type in JavaScript that are guaranteed to be unique. They are often used as object keys to avoid naming collisions.

Implementations§

Source§

impl Symbol

Source

pub fn new(description: Option<String>) -> Self

Creates a new Symbol with an optional description.

§Arguments
  • description - Optional description for the symbol
§Examples
use jsbind::prelude::*;

let sym1 = Symbol::new(None);
let sym2 = Symbol::new(Some("my symbol"));
Source

pub fn for_key(key: &str) -> Self

Creates a symbol from the global Symbol registry.

§Arguments
  • key - The key to lookup/register in the global symbol registry
§Returns

The symbol associated with the key

§Examples
use jsbind::prelude::*;

let sym1 = Symbol::for_key("myKey");
let sym2 = Symbol::for_key("myKey");
// sym1 and sym2 refer to the same symbol
Source

pub fn key_for(&self) -> Option<String>

Gets the key for this symbol from the global symbol registry.

§Returns

The key if this symbol is in the global registry, None otherwise

§Examples
use jsbind::prelude::*;

let sym = Symbol::for_key("myKey");
assert_eq!(sym.key_for(), Some("myKey".to_string()));

let local_sym = Symbol::new(None);
assert_eq!(local_sym.key_for(), None);
Source

pub fn description(&self) -> Option<String>

Gets the description of this symbol.

§Returns

The description if available

§Examples
use jsbind::prelude::*;

let sym = Symbol::new(Some("test symbol"));
assert_eq!(sym.description(), Some("test symbol".to_string()));
Source

pub fn to_string_repr(&self) -> String

Returns the string representation of this symbol.

§Returns

String representation like “Symbol(description)”

§Examples
use jsbind::prelude::*;

let sym = Symbol::new(Some("test"));
let str_repr = sym.to_string_repr();
// str_repr will be something like "Symbol(test)"
Source

pub fn value_of(&self) -> String

Gets primitive symbol value as string.

§Returns

String representation of the symbol

§Examples
use jsbind::prelude::*;

let sym = Symbol::new(Some("test"));
let value = sym.value_of();
Source

pub fn is_empty(&self) -> bool

Checks if symbol has no description.

§Returns

true if description is undefined

§Examples
use jsbind::prelude::*;

let sym1 = Symbol::new(None);
assert!(sym1.is_empty());

let sym2 = Symbol::new(Some("test"));
assert!(!sym2.is_empty());
Source

pub fn get_hash(&self) -> u64

Gets hash code for symbol.

§Returns

Hash value based on unique handle

§Examples
use jsbind::prelude::*;

let sym = Symbol::new(Some("test"));
let hash_val = sym.get_hash();
Source

pub fn async_iterator() -> Self

Symbol.asyncIterator

Source

pub fn has_instance() -> Self

Symbol.hasInstance

Source

pub fn is_concat_spreadable() -> Self

Symbol.isConcatSpreadable

Source

pub fn iterator() -> Self

Symbol.iterator

Source

pub fn match_() -> Self

Symbol.match

Source

pub fn match_all() -> Self

Symbol.matchAll

Source

pub fn replace() -> Self

Symbol.replace

Source

pub fn search() -> Self

Symbol.search

Source

pub fn species() -> Self

Symbol.species

Source

pub fn split() -> Self

Symbol.split

Source

pub fn to_primitive() -> Self

Symbol.toPrimitive

Source

pub fn to_string_tag() -> Self

Symbol.toStringTag

Source

pub fn unscopables() -> Self

Symbol.unscopables

Methods from Deref<Target = Any>§

Source

pub fn get<T>(&self, prop: T) -> Val
where T: Into<Val>,

Gets the property prop

Source

pub fn set<K, V>(&self, prop: K, val: V)
where K: Into<Val>, V: Into<Val>,

Set the underlying js object property prop to val

Source

pub fn has<T>(&self, prop: T) -> bool
where T: Into<Val>,

Checks whether a property prop exists

Source

pub fn has_own_property(&self, prop: &str) -> bool

Checks whether a non-inherited property prop exists

Source

pub fn type_of(&self) -> String

Gets the typeof the underlying js object

Source

pub fn at<T>(&self, idx: T) -> Val
where T: Into<Val>,

Gets the element at index idx. Assumes the underlying js type is indexable

Source

pub fn to_vec<V>(&self) -> Vec<V>
where V: FromVal,

Converts the underlying js array to a Vec of V

Source

pub fn call(&self, f: &str, args: &[Val]) -> Val

Calls the method f with args, can return an undefined js value

Source

pub fn new(&self, args: &[Val]) -> Val

Calls the object’s constructor with args constructing a new object

Source

pub fn invoke(&self, args: &[Val]) -> Val

Invokes the function object with args, can return an undefined js value

Source

pub fn await_(&self) -> Val

Awaits the invoked function object

Source

pub fn instanceof(&self, v: Val) -> bool

Checks whether this Val is an instanceof v

Source

pub fn is_number(&self) -> bool

Source

pub fn is_bool(&self) -> bool

Source

pub fn is_string(&self) -> bool

Source

pub fn is_null(&self) -> bool

Source

pub fn is_undefined(&self) -> bool

Source

pub fn is_error(&self) -> bool

Source

pub fn is_function(&self) -> bool

Source

pub fn as_<T>(&self) -> T
where T: FromVal,

Examples found in repository?
examples/any.rs (line 15)
3fn main() {
4    emlite::init();
5    // Create Any from different Rust types
6    let num = Any::from(123);
7    let text = Any::from("hello");
8    let boolean = Any::from(true);
9    println!("Any from int: {:?}", num);
10    println!("Any from str: {:?}", text);
11    println!("Any from bool: {:?}", boolean);
12    Console::get().log(&[num.clone(), text.clone(), boolean.clone()]);
13
14    // Convert Any back to Rust types using as_::<T>()
15    let n: i32 = num.as_();
16    let s: Option<String> = text.as_();
17    let b: bool = boolean.as_();
18    println!("Extracted i32: {}", n);
19    println!("Extracted String: {:?}", s);
20    println!("Extracted bool: {}", b);
21}
More examples
Hide additional examples
examples/closures.rs (line 10)
4fn main() {
5    emlite::init();
6
7    // 0-arg closure returning a number
8    let c0 = Closure::bind0(|| 42);
9    let f0: Function = (&c0).into();
10    let r0 = f0.call(&Any::undefined(), &[]).unwrap().as_::<i32>();
11    Console::get().log(&[Any::from(r0)]);
12
13    // 1-arg closure: add 1
14    let c1 = Closure::bind1(|x: i32| x + 1);
15    let f1: Function = (&c1).into();
16    let r1 = f1
17        .call(&Any::undefined(), &[Any::from(9)])
18        .unwrap()
19        .as_::<i32>();
20    Console::get().log(&[Any::from(r1)]);
21
22    // 2-arg closure: sum
23    let c2 = Closure::bind2(|a: i32, b: i32| a + b);
24    let f2: Function = (&c2).into();
25    let r2 = f2
26        .call(&Any::undefined(), &[Any::from(2), Any::from(3)])
27        .unwrap()
28        .as_::<i32>();
29    Console::get().log(&[Any::from(r2)]);
30
31    // 3-arg closure: format string
32    let c3 = Closure::bind3(|a: i32, b: i32, c: i32| format!("{}-{}-{}", a, b, c));
33    let f3: Function = (&c3).into();
34    let r3 = f3
35        .call(
36            &Any::undefined(),
37            &[Any::from(1), Any::from(2), Any::from(3)],
38        )
39        .unwrap()
40        .as_::<Option<String>>()
41        .unwrap();
42    Console::get().log(&[Any::from(r3)]);
43
44    // 4-arg closure: sum of four
45    let c4 = Closure::bind4(|a: i32, b: i32, c: i32, d: i32| a + b + c + d);
46    let f4: Function = (&c4).into();
47    let r4 = f4
48        .call(
49            &Any::undefined(),
50            &[Any::from(1), Any::from(2), Any::from(3), Any::from(4)],
51        )
52        .unwrap()
53        .as_::<i32>();
54    Console::get().log(&[Any::from(r4)]);
55}
Source

pub fn to_utf16(&self) -> Option<Vec<u16>>

Extracts UTF-16 data as Option<Vec>

Source

pub fn to_utf16_result(&self) -> Result<Vec<u16>, Val>

Extracts UTF-16 data, returning error if null or if self is error

Trait Implementations§

Source§

impl AsMut<Val> for Symbol

Source§

fn as_mut(&mut self) -> &mut Any

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl AsRef<Val> for Symbol

Source§

fn as_ref(&self) -> &Any

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Clone for Symbol

Source§

fn clone(&self) -> Symbol

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Symbol

Source§

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

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

impl Deref for Symbol

Source§

type Target = Val

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for Symbol

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl DynCast for Symbol

Source§

fn instanceof(val: &Val) -> bool

Implementation of val instanceof ThisType.
Source§

fn unchecked_from_val(v: Val) -> Self

Zero-cost unchecked conversion from Val into Self.
Source§

fn unchecked_from_val_ref(v: &Val) -> &Self

Zero-cost unchecked conversion from &Val into &Self.
Source§

fn unchecked_from_val_mut(v: &mut Val) -> &mut Self

Zero-cost unchecked conversion from &mut Val into &mut Self.
Source§

fn has_type<T>(&self) -> bool
where T: DynCast,

Source§

fn dyn_into<T>(self) -> Result<T, Self>
where T: DynCast,

Source§

fn dyn_ref<T>(&self) -> Option<&T>
where T: DynCast,

Source§

fn dyn_mut<T>(&mut self) -> Option<&mut T>
where T: DynCast,

Source§

fn unchecked_into<T>(self) -> T
where T: DynCast,

Source§

fn unchecked_ref<T>(&self) -> &T
where T: DynCast,

Source§

fn unchecked_mut<T>(&mut self) -> &mut T
where T: DynCast,

Source§

fn is_instance_of<T>(&self) -> bool
where T: DynCast,

Source§

fn is_type_of(val: &Val) -> bool

Customisable brand check – defaults to instanceof.
Source§

impl From<&Symbol> for Any

Source§

fn from(x: &Symbol) -> Any

Converts to this type from the input type.
Source§

impl From<Symbol> for Any

Source§

fn from(x: Symbol) -> Any

Converts to this type from the input type.
Source§

impl FromVal for Symbol

Source§

fn from_val(v: &Any) -> Self

Creates a Val object from another
Source§

fn take_ownership(v: Handle) -> Self

Takes the ownership of a handle
Source§

fn as_handle(&self) -> Handle

Returns the raw js handle
Source§

impl Hash for Symbol

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Symbol

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Symbol

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for Symbol

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Eq for Symbol

Auto Trait Implementations§

§

impl Freeze for Symbol

§

impl RefUnwindSafe for Symbol

§

impl Send for Symbol

§

impl Sync for Symbol

§

impl Unpin for Symbol

§

impl UnwindSafe for Symbol

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.