Emits a simple parse-if-peek for a single atom field.
(&self)
| 147 | |
| 148 | /// Emits a simple parse-if-peek for a single atom field. |
| 149 | fn atom_parse_if_peek(&self) -> TokenStream { |
| 150 | let atom = self.atom.as_ref().expect("atom_parse_if_peek called without atom"); |
| 151 | let atom_path = atom.path(); |
| 152 | let atom_set = atom.first_segment(); |
| 153 | let var = &self.var; |
| 154 | let inner_ty = self.ty.unpack_option(); |
| 155 | quote! { |
| 156 | if p.peek::<#inner_ty>() |
| 157 | && p.to_atom::<#atom_set>(c) == #atom_path |
| 158 | { |
| 159 | #var = Some(p.parse::<#inner_ty>()?); |
| 160 | } |
| 161 | } |
| 162 | } |
| 163 | |
| 164 | fn binding(&self) -> TokenStream { |
| 165 | let Field { var, ty, .. } = self; |
no test coverage detected