salsa_macro_rules/
return_mode.rs1#[macro_export]
5macro_rules! return_mode_expression {
6 (
7 (copy, $maybe_backdate:ident, $maybe_default:ident),
8 $field_ty:ty,
9 $field_ref_expr:expr,
10 ) => {
11 *$field_ref_expr
12 };
13
14 (
15 (clone, $maybe_backdate:ident, $maybe_default:ident),
16 $field_ty:ty,
17 $field_ref_expr:expr,
18 ) => {
19 ::core::clone::Clone::clone($field_ref_expr)
20 };
21
22 (
23 (ref, $maybe_backdate:ident, $maybe_default:ident),
24 $field_ty:ty,
25 $field_ref_expr:expr,
26 ) => {
27 $field_ref_expr
28 };
29
30 (
31 (deref, $maybe_backdate:ident, $maybe_default:ident),
32 $field_ty:ty,
33 $field_ref_expr:expr,
34 ) => {
35 ::core::ops::Deref::deref($field_ref_expr)
36 };
37
38 (
39 (as_ref, $maybe_backdate:ident, $maybe_default:ident),
40 $field_ty:ty,
41 $field_ref_expr:expr,
42 ) => {
43 ::salsa::SalsaAsRef::as_ref($field_ref_expr)
44 };
45
46 (
47 (as_deref, $maybe_backdate:ident, $maybe_default:ident),
48 $field_ty:ty,
49 $field_ref_expr:expr,
50 ) => {
51 ::salsa::SalsaAsDeref::as_deref($field_ref_expr)
52 };
53}
54
55#[macro_export]
56macro_rules! return_mode_ty {
57 (
58 (copy, $maybe_backdate:ident, $maybe_default:ident),
59 $db_lt:lifetime,
60 $field_ty:ty
61 ) => {
62 $field_ty
63 };
64
65 (
66 (clone, $maybe_backdate:ident, $maybe_default:ident),
67 $db_lt:lifetime,
68 $field_ty:ty
69 ) => {
70 $field_ty
71 };
72
73 (
74 (ref, $maybe_backdate:ident, $maybe_default:ident),
75 $db_lt:lifetime,
76 $field_ty:ty
77 ) => {
78 & $db_lt $field_ty
79 };
80
81 (
82 (deref, $maybe_backdate:ident, $maybe_default:ident),
83 $db_lt:lifetime,
84 $field_ty:ty
85 ) => {
86 & $db_lt <$field_ty as ::core::ops::Deref>::Target
87 };
88
89 (
90 (as_ref, $maybe_backdate:ident, $maybe_default:ident),
91 $db_lt:lifetime,
92 $field_ty:ty
93 ) => {
94 <$field_ty as ::salsa::SalsaAsRef>::AsRef<$db_lt>
95 };
96
97 (
98 (as_deref, $maybe_backdate:ident, $maybe_default:ident),
99 $db_lt:lifetime,
100 $field_ty:ty
101 ) => {
102 <$field_ty as ::salsa::SalsaAsDeref>::AsDeref<$db_lt>
103 };
104}