Crate js_intern

Source
Expand description

Stores one copy of each distinct JavaScript primitive. For example, js_intern!("string") evaluates to a &JsValue but uses only one heap allocation and a one-time translation from the utf-8 Rust string to the utf-16 JavaScript string the first time the expression is evaluated. Furthermore, strings are de-duplicated across the program. So, any time js_intern!(1.0) is used in the program, the same instance of the JavaScript number is used.

§Supported types

  • &'static str Eg: js_intern!("str")
  • f64, f32, u8, u16, u32, i8, i16, i32 Eg: js_intern(1.0)
  • bool Eg: js_intern(true)

If you like this, you may like these other crates by Zac Burns (That3Percent)

  • js-object A macro for creating JavaScript objects
  • soa-vec A struct of arrays layout with a Vec of tuple API
  • second-stack A memory allocator for large slices that don’t escape the stack.

Macros§

js_intern
Stores one copy of each distinct JavaScript primitive. For example, js_intern!("string") evaluates to a &JsValue but only does the translation from the utf-8 Rust string to the utf-16 JavaScript string the first time the expression is evaluated. Furthermore, strings are de-duplicated across the program. So, any time js_intern!("string") is used in the program, the same instance of the JavaScript string is used.
try_js_intern
Does a very conservative check to see if an expression is a candidate for interning. If the expression is a candidate to be interned this will return js_intern!(...) Otherwise, the original expression is returned.