#javascript #intern #wasm-bindgen #interning

macro js-intern-proc-macro

Internal implementation details for the js-intern crate

2 releases

0.3.1 Jul 5, 2019
0.3.0 Jul 5, 2019

#27 in #intern

Download history 66/week @ 2023-12-14 17/week @ 2023-12-21 3/week @ 2023-12-28 10/week @ 2024-01-04 36/week @ 2024-01-11 23/week @ 2024-01-18 43/week @ 2024-01-25 43/week @ 2024-02-01 27/week @ 2024-02-08 38/week @ 2024-02-15 80/week @ 2024-02-22 28/week @ 2024-02-29 58/week @ 2024-03-07 54/week @ 2024-03-14 64/week @ 2024-03-21 46/week @ 2024-03-28

223 downloads per month
Used in 3 crates (via js-intern)

MIT license

10KB
135 lines

A macro for interning JavaScript primitives.

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, values 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)

Related

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 Rust memory allocator for large slices that don't escape the stack.

Dependencies

~0.9–1.5MB
~32K SLoC