wsdom_core/js/
nullable.rs

1use crate::{js::value::JsValue, js_cast::JsCast, serialize::UseInJsCode};
2
3include!("impl_basic.rs");
4
5impl_basic!(JsNullish);
6
7impl_basic!(JsNullable; T; JsValue);
8
9impl JsNullish {
10    pub fn into_nullable_ref<T>(&self) -> &JsNullable<T> {
11        JsCast::unchecked_ref(self)
12    }
13    pub fn into_nullable<T>(self) -> JsNullable<T> {
14        JsCast::unchecked_into(self)
15    }
16}
17
18impl<T> JsNullable<T>
19where
20    T: JsCast,
21{
22    pub fn from_nonnull(value: T) -> Self {
23        JsCast::unchecked_into(value)
24    }
25    pub fn from_nonnull_ref(value: &T) -> &Self {
26        JsCast::unchecked_ref(value)
27    }
28    pub fn unwrap(self) -> T {
29        JsCast::unchecked_into(self)
30    }
31    pub fn unwrap_ref(&self) -> &T {
32        JsCast::unchecked_ref(self)
33    }
34}