1 | #![macro_use ] |
2 | |
3 | //! Contains several macros used in this crate. |
4 | |
5 | macro_rules! gen_setter { |
6 | ($(#[$comments:meta])* $field:ident : into $t:ty) => { |
7 | |
8 | $(#[$comments])* |
9 | /// |
10 | /// <small>See [`ParserConfig`][crate::ParserConfig] fields docs for details</small> |
11 | #[inline] |
12 | pub fn $field<T: Into<$t>>(mut self, value: T) -> Self { |
13 | self.$field = value.into(); |
14 | self |
15 | } |
16 | }; |
17 | ($(#[$comments:meta])* $field:ident : val $t:ty) => { |
18 | $(#[$comments])* |
19 | /// |
20 | /// <small>See [`ParserConfig`][crate::ParserConfig] fields docs for details</small> |
21 | #[inline] |
22 | #[must_use] pub fn $field(mut self, value: $t) -> Self { |
23 | self.$field = value; |
24 | self |
25 | } |
26 | }; |
27 | ($(#[$comments:meta])* $field:ident : delegate $t:ty) => { |
28 | $(#[$comments])* |
29 | /// |
30 | /// <small>See [`ParserConfig`][crate::ParserConfig] fields docs for details</small> |
31 | #[inline] |
32 | #[must_use] pub fn $field(mut self, value: $t) -> Self { |
33 | self.c.$field = value; |
34 | self |
35 | } |
36 | }; |
37 | ($(#[$comments:meta])* $field:ident : c2 $t:ty) => { |
38 | $(#[$comments])* |
39 | /// |
40 | /// <small>See [`ParserConfig2`][crate::reader::ParserConfig2] fields docs for details</small> |
41 | #[inline] |
42 | #[must_use] |
43 | pub fn $field(self, value: $t) -> ParserConfig2 { |
44 | ParserConfig2 { |
45 | c: self, |
46 | ..Default::default() |
47 | } |
48 | .$field(value) |
49 | } |
50 | }; |
51 | } |
52 | |
53 | macro_rules! gen_setters { |
54 | ($target:ident, $($(#[$comments:meta])* $field:ident : $k:tt $tpe:ty),+) => ( |
55 | impl $target {$( |
56 | |
57 | gen_setter! { $(#[$comments])* $field : $k $tpe } |
58 | )+ |
59 | }) |
60 | } |
61 | |