Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bevyengine
GitHub Repository: bevyengine/bevy
Path: blob/main/crates/bevy_macro_utils/src/attrs.rs
6595 views
1
use syn::{Expr, ExprLit, Lit};
2
3
use crate::symbol::Symbol;
4
5
/// Get a [literal string](struct@syn::LitStr) from the provided [expression](Expr).
6
pub 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
20
/// Get a [literal boolean](struct@syn::LitBool) from the provided [expression](Expr) as a [`bool`].
21
pub 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
}
35
36