wsdom_core/js/immediates/
primitives.rs

1use crate::{
2    js::primitives::*,
3    js::value::JsValue,
4    serialize::{SerdeToJs, ToJs, UseInJsCode},
5};
6
7macro_rules! impl_use_in_js {
8    ($name:ident) => {
9        impl UseInJsCode for $name {
10            fn serialize_to(&self, buf: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
11                SerdeToJs(self).serialize_to(buf)
12            }
13        }
14        impl ToJs<JsValue> for $name {}
15    };
16}
17
18impl ToJs<JsBoolean> for bool {}
19impl_use_in_js!(bool);
20impl ToJs<JsString> for str {}
21impl_use_in_js!(str);
22impl<'a> UseInJsCode for &'a str {
23    fn serialize_to(&self, buf: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24        SerdeToJs(self).serialize_to(buf)
25    }
26}
27impl<'a> ToJs<JsString> for &'a str {}
28impl<'a> ToJs<JsValue> for &'a str {}
29
30impl ToJs<JsNumber> for i8 {}
31impl ToJs<JsNumber> for i16 {}
32impl ToJs<JsNumber> for i32 {}
33impl ToJs<JsNumber> for i64 {}
34impl ToJs<JsNumber> for isize {}
35impl ToJs<JsNumber> for u8 {}
36impl ToJs<JsNumber> for u16 {}
37impl ToJs<JsNumber> for u32 {}
38impl ToJs<JsNumber> for u64 {}
39impl ToJs<JsNumber> for usize {}
40impl ToJs<JsNumber> for f32 {}
41impl ToJs<JsNumber> for f64 {}
42
43impl_use_in_js!(f64);
44impl_use_in_js!(f32);
45impl_use_in_js!(usize);
46impl_use_in_js!(u64);
47impl_use_in_js!(u32);
48impl_use_in_js!(u16);
49impl_use_in_js!(u8);
50impl_use_in_js!(isize);
51impl_use_in_js!(i64);
52impl_use_in_js!(i32);
53impl_use_in_js!(i16);
54impl_use_in_js!(i8);