blob: 41fcdb26590f9f31af7fd49ac0cef9a20ae7859a [file] [log] [blame]
use super::*;
#[derive(Debug, Clone, Eq, PartialEq)]
pub struct Crate {
shebang: Option<String>,
attrs: Vec<Attribute>,
items: Vec<Item>,
}
#[cfg(feature = "parsing")]
pub mod parsing {
use super::*;
use attr::parsing::inner_attr;
use space::whitespace;
use item::parsing::item;
named!(pub krate -> Crate, do_parse!(
attrs: many0!(inner_attr) >>
items: many0!(item) >>
option!(whitespace) >>
(Crate {
shebang: None,
attrs: attrs,
items: items,
})
));
}
#[cfg(feature = "printing")]
mod printing {
use super::*;
use attr::FilterAttrs;
use quote::{Tokens, ToTokens};
impl ToTokens for Crate {
fn to_tokens(&self, tokens: &mut Tokens) {
for attr in self.attrs.inner() {
attr.to_tokens(tokens);
}
for item in &self.items {
item.to_tokens(tokens);
}
}
}
}