1#[doc(hidden)]
2#[macro_export]
3macro_rules! _lib_inc {
4 ($id:expr) => {{
5 let _rv = $id;
6 $id += 1;
7 _rv
8 }};
9}
10
11#[doc(hidden)]
12#[macro_export]
13macro_rules! _lib_dec {
14 ($id:expr) => {{
15 let _rv = $id;
16 $id -= 1;
17 _rv
18 }};
19}
20
21#[doc(hidden)]
22#[macro_export]
23macro_rules! _lib_ternary {
24 ($c:expr, $v:expr, $v1:expr) => {
25 if $c {
26 $v
27 } else {
28 $v1
29 }
30 };
31}
32
33#[doc(hidden)]
34#[macro_export]
35macro_rules! _lib_then {
36 ($c:expr, $v:expr) => {
37 if $c {
38 $v;
39 }
40 };
41}
42
43#[doc(hidden)]
44#[macro_export]
45macro_rules! _lib_attempt {
46 (@recurse ($a:expr) { } catch ($e:ident) $b:block) => {
47 if let Err ($e) = $a $b
48 };
49 (@recurse ($a:expr) { $e:expr; $($tail:tt)* } $($handler:tt)*) => {
50 $crate::_lib_attempt!{@recurse ($a.and_then (|_| $e)) { $($tail)* } $($handler)*}
51 };
52 ({ $e:expr; $($tail:tt)* } $($handler:tt)*) => {
53 $crate::_lib_attempt!{@recurse ($e) { $($tail)* } $($handler)* }
54 };
55}
56
57#[doc(inline)]
58pub use _lib_inc as inc;
59
60#[doc(inline)]
61pub use _lib_dec as dec;
62
63#[doc(inline)]
64pub use _lib_ternary as ternary;
65
66#[doc(inline)]
67pub use _lib_then as then;
68
69#[doc(inline)]
70pub use _lib_attempt as attempt;