1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use crate::ast;
use crate::{Id, Parse, Spanned, ToTokens};
use runestick::Span;
#[derive(Debug, Clone, PartialEq, Eq, Parse, ToTokens, Spanned)]
#[rune(parse = "meta_only")]
pub struct ItemConst {
#[rune(id)]
pub id: Option<Id>,
#[rune(iter, meta)]
pub attributes: Vec<ast::Attribute>,
#[rune(optional, meta)]
pub visibility: ast::Visibility,
#[rune(meta)]
pub const_token: T![const],
pub name: ast::Ident,
pub eq: T![=],
pub expr: ast::Expr,
}
impl ItemConst {
pub fn descriptive_span(&self) -> Span {
self.const_token.span().join(self.name.span())
}
}
item_parse!(Const, ItemConst, "constant item");