Macro boa_engine::js_string

source ·
macro_rules! js_string {
    () => { ... };
    ($s:literal) => { ... };
    ($s:expr) => { ... };
    ( $x:expr, $y:expr ) => { ... };
    ( $( $s:expr ),+ ) => { ... };
}
Expand description

Utility macro to create a JsString.

§Examples

You can call the macro without arguments to create an empty JsString:

use boa_engine::js_string;
use boa_engine::string::utf16;

let empty_str = js_string!();
assert!(empty_str.is_empty());

You can create a JsString from a string literal, which completely skips the runtime conversion from &str to &[u16]:

let hw = js_string!("Hello, world!");
assert_eq!(&hw, utf16!("Hello, world!"));

Any &[u16] slice is a valid JsString, including unpaired surrogates:

let array = js_string!(&[0xD8AFu16, 0x00A0, 0xD8FF, 0x00F0]);

You can also pass it any number of &[u16] as arguments to create a new JsString with the concatenation of every slice:

const NAME: &[u16] = utf16!("human! ");
let greeting = js_string!("Hello, ");
let msg = js_string!(&greeting, &NAME, utf16!("Nice to meet you!"));

assert_eq!(&msg, utf16!("Hello, human! Nice to meet you!"));