wasm_bindgen/rt/
marker.rs

1/// Marker trait for types that support `#[wasm_bindgen(constructor)]`.
2#[cfg_attr(
3    feature = "msrv",
4    rustversion::attr(
5        since(1.78),
6        diagnostic::on_unimplemented(
7            message = "JavaScript constructors are not supported for `{Self}`",
8            label = "this function cannot be the constructor of `{Self}`",
9            note = "`#[wasm_bindgen(constructor)]` is only supported for `struct`s and cannot be used for `enum`s.",
10            note = "Consider removing the `constructor` option and using a regular static method instead."
11        )
12    )
13)]
14pub trait SupportsConstructor {}
15pub struct CheckSupportsConstructor<T: SupportsConstructor>(T);
16
17/// Marker trait for types that support `#[wasm_bindgen(getter)]` or
18/// `#[wasm_bindgen(Setter)]` on instance methods.
19#[cfg_attr(
20    feature = "msrv",
21    rustversion::attr(
22        since(1.78),
23        diagnostic::on_unimplemented(
24            message = "JavaScript instance getters and setters are not supported for `{Self}`",
25            label = "this method cannot be a getter or setter for `{Self}`",
26            note = "`#[wasm_bindgen(getter)]` and `#[wasm_bindgen(setter)]` are only supported for `struct`s and cannot be used for `enum`s.",
27        )
28    )
29)]
30pub trait SupportsInstanceProperty {}
31pub struct CheckSupportsInstanceProperty<T: SupportsInstanceProperty>(T);
32
33/// Marker trait for types that support `#[wasm_bindgen(getter)]` or
34/// `#[wasm_bindgen(Setter)]` on static methods.
35#[cfg_attr(
36    feature = "msrv",
37    rustversion::attr(
38        since(1.78),
39        diagnostic::on_unimplemented(
40            message = "JavaScript static getters and setters are not supported for `{Self}`",
41            label = "this static function cannot be a static getter or setter on `{Self}`",
42            note = "`#[wasm_bindgen(getter)]` and `#[wasm_bindgen(setter)]` are only supported for `struct`s and cannot be used for `enum`s.",
43        )
44    )
45)]
46pub trait SupportsStaticProperty {}
47pub struct CheckSupportsStaticProperty<T: SupportsStaticProperty>(T);