bevy_macro_utils/
attrs.rs1use syn::{Expr, ExprLit, Lit};
2
3use crate::symbol::Symbol;
4
5pub fn get_lit_str(attr_name: Symbol, value: &Expr) -> syn::Result<&syn::LitStr> {
7 if let Expr::Lit(ExprLit {
8 lit: Lit::Str(lit), ..
9 }) = &value
10 {
11 Ok(lit)
12 } else {
13 Err(syn::Error::new_spanned(
14 value,
15 format!("expected {attr_name} attribute to be a string: `{attr_name} = \"...\"`"),
16 ))
17 }
18}
19
20pub fn get_lit_bool(attr_name: Symbol, value: &Expr) -> syn::Result<bool> {
22 if let Expr::Lit(ExprLit {
23 lit: Lit::Bool(lit),
24 ..
25 }) = &value
26 {
27 Ok(lit.value())
28 } else {
29 Err(syn::Error::new_spanned(
30 value,
31 format!("expected {attr_name} attribute to be a bool value, `true` or `false`: `{attr_name} = ...`"),
32 ))?
33 }
34}