blob: c5b2126b17a80d2c7e4f87e314966f8b6c5599b1 [file] [log] [blame]
David Tolnay4a51dc72016-10-01 00:40:31 -07001use super::*;
2
3#[derive(Debug, Clone, Eq, PartialEq)]
4pub struct Crate {
5 attrs: Vec<Attribute>,
6 items: Vec<Item>,
7}
8
9#[cfg(feature = "parsing")]
10pub mod parsing {
11 use super::*;
12 use attr::parsing::inner_attr;
13 use item::parsing::item;
14 use nom::multispace;
15
16 named!(pub krate -> Crate, do_parse!(
17 attrs: many0!(inner_attr) >>
18 items: many0!(item) >>
19 option!(multispace) >>
20 (Crate {
21 attrs: attrs,
22 items: items,
23 })
24 ));
25}
26
27#[cfg(feature = "printing")]
28mod printing {
29 use super::*;
30 use attr::FilterAttrs;
31 use quote::{Tokens, ToTokens};
32
33 impl ToTokens for Crate {
34 fn to_tokens(&self, tokens: &mut Tokens) {
35 for attr in self.attrs.inner() {
36 attr.to_tokens(tokens);
37 }
38 for item in &self.items {
39 item.to_tokens(tokens);
40 }
41 }
42 }
43}