(&self, key: &str)
| 163 | } |
| 164 | |
| 165 | pub fn _optional_str(&self, key: &str) -> Result<Option<String>> { |
| 166 | let value = if let Some((_, meta)) = self.meta_map.get(key) { |
| 167 | let Meta::NameValue(syn::MetaNameValue { |
| 168 | value: |
| 169 | syn::Expr::Lit(syn::ExprLit { |
| 170 | lit: syn::Lit::Str(lit), |
| 171 | .. |
| 172 | }), |
| 173 | .. |
| 174 | }) = meta |
| 175 | else { |
| 176 | bail_span!( |
| 177 | meta, |
| 178 | "#[{}({} = ...)] must exist as a string", |
| 179 | self.meta_name(), |
| 180 | key |
| 181 | ) |
| 182 | }; |
| 183 | Some(lit.value()) |
| 184 | } else { |
| 185 | None |
| 186 | }; |
| 187 | Ok(value) |
| 188 | } |
| 189 | |
| 190 | pub fn _optional_path(&self, key: &str) -> Result<Option<syn::Path>> { |
| 191 | let value = if let Some((_, meta)) = self.meta_map.get(key) { |
no test coverage detected