Skip to main content

frozen_collections_macros/
lib.rs

1#![expect(missing_docs, reason = "This is an implementation crate, not a public API crate")]
2
3//! Implementation crate for the frozen collections.
4//!
5//! <div class="warning">
6//! This crate is an implementation detail of the `frozen_collections` crate.
7//! This crate's API is therefore not stable and may change at any time. Please do not
8//! use this crate directly and instead use the public API provided by the
9//! `frozen_collections` crate.
10//! </div>
11
12use frozen_collections_core::macros::{
13    derive_scalar_macro, fz_hash_map_macro, fz_hash_set_macro, fz_ordered_map_macro, fz_ordered_set_macro, fz_scalar_map_macro,
14    fz_scalar_set_macro, fz_string_map_macro, fz_string_set_macro,
15};
16use proc_macro::TokenStream;
17use proc_macro_error2::proc_macro_error;
18
19#[proc_macro]
20#[proc_macro_error]
21pub fn fz_hash_map(item: TokenStream) -> TokenStream {
22    fz_hash_map_macro(item.into())
23        .unwrap_or_else(|error| error.to_compile_error())
24        .into()
25}
26
27#[proc_macro]
28#[proc_macro_error]
29pub fn fz_hash_set(item: TokenStream) -> TokenStream {
30    fz_hash_set_macro(item.into())
31        .unwrap_or_else(|error| error.to_compile_error())
32        .into()
33}
34
35#[proc_macro]
36#[proc_macro_error]
37pub fn fz_ordered_map(item: TokenStream) -> TokenStream {
38    fz_ordered_map_macro(item.into())
39        .unwrap_or_else(|error| error.to_compile_error())
40        .into()
41}
42
43#[proc_macro]
44#[proc_macro_error]
45pub fn fz_ordered_set(item: TokenStream) -> TokenStream {
46    fz_ordered_set_macro(item.into())
47        .unwrap_or_else(|error| error.to_compile_error())
48        .into()
49}
50
51#[proc_macro]
52#[proc_macro_error]
53pub fn fz_string_map(item: TokenStream) -> TokenStream {
54    fz_string_map_macro(item.into())
55        .unwrap_or_else(|error| error.to_compile_error())
56        .into()
57}
58
59#[proc_macro]
60#[proc_macro_error]
61pub fn fz_string_set(item: TokenStream) -> TokenStream {
62    fz_string_set_macro(item.into())
63        .unwrap_or_else(|error| error.to_compile_error())
64        .into()
65}
66
67#[proc_macro]
68#[proc_macro_error]
69pub fn fz_scalar_map(item: TokenStream) -> TokenStream {
70    fz_scalar_map_macro(item.into())
71        .unwrap_or_else(|error| error.to_compile_error())
72        .into()
73}
74
75#[proc_macro]
76#[proc_macro_error]
77pub fn fz_scalar_set(item: TokenStream) -> TokenStream {
78    fz_scalar_set_macro(item.into())
79        .unwrap_or_else(|error| error.to_compile_error())
80        .into()
81}
82
83#[proc_macro_derive(Scalar)]
84#[proc_macro_error]
85pub fn derive_scalar(item: TokenStream) -> TokenStream {
86    derive_scalar_macro(item.into())
87        .unwrap_or_else(|error| error.to_compile_error())
88        .into()
89}