]> git.proxmox.com Git - rustc.git/blame - vendor/serde/src/integer128.rs
New upstream version 1.36.0+dfsg1
[rustc.git] / vendor / serde / src / integer128.rs
CommitLineData
8faf50e0
XL
1/// Conditional compilation depending on whether Serde is built with support for
2/// 128-bit integers.
3///
4/// Data formats that wish to support Rust compiler versions older than 1.26 may
5/// place the i128 / u128 methods of their Serializer and Deserializer behind
6/// this macro.
7///
8/// Data formats that require a minimum Rust compiler version of at least 1.26
9/// do not need to bother with this macro and may assume support for 128-bit
10/// integers.
11///
12/// ```rust
13/// #[macro_use]
14/// extern crate serde;
15///
16/// use serde::Serializer;
17/// # use serde::private::ser::Error;
18/// #
19/// # struct MySerializer;
20///
21/// impl Serializer for MySerializer {
22/// type Ok = ();
23/// type Error = Error;
24///
25/// fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error> {
26/// /* ... */
27/// # unimplemented!()
28/// }
29///
30/// /* ... */
31///
32/// serde_if_integer128! {
33/// fn serialize_i128(self, v: i128) -> Result<Self::Ok, Self::Error> {
34/// /* ... */
35/// # unimplemented!()
36/// }
37///
38/// fn serialize_u128(self, v: u128) -> Result<Self::Ok, Self::Error> {
39/// /* ... */
40/// # unimplemented!()
41/// }
42/// }
43/// #
44/// # __serialize_unimplemented! {
45/// # bool i8 i16 i32 u8 u16 u32 u64 f32 f64 char str bytes none some
46/// # unit unit_struct unit_variant newtype_struct newtype_variant seq
47/// # tuple tuple_struct tuple_variant map struct struct_variant
48/// # }
49/// }
50/// #
51/// # fn main() {}
52/// ```
53///
54/// When Serde is built with support for 128-bit integers, this macro expands
55/// transparently into just the input tokens.
56///
57/// ```rust
58/// macro_rules! serde_if_integer128 {
59/// ($($tt:tt)*) => {
60/// $($tt)*
61/// };
62/// }
63/// ```
64///
65/// When built without support for 128-bit integers, this macro expands to
66/// nothing.
67///
68/// ```rust
69/// macro_rules! serde_if_integer128 {
70/// ($($tt:tt)*) => {};
71/// }
72/// ```
73#[cfg(integer128)]
74#[macro_export]
75macro_rules! serde_if_integer128 {
76 ($($tt:tt)*) => {
77 $($tt)*
78 };
79}
80
81#[cfg(not(integer128))]
82#[macro_export]
83#[doc(hidden)]
84macro_rules! serde_if_integer128 {
85 ($($tt:tt)*) => {};
86}