mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-23 00:08:01 +00:00
8df841f048
Closes #51, #175, and #187
31 lines
728 B
Rust
31 lines
728 B
Rust
use syntax::ast;
|
|
use syntax::ext::base::ExtCtxt;
|
|
|
|
use aster;
|
|
use attr;
|
|
|
|
pub fn struct_field_attrs(
|
|
cx: &ExtCtxt,
|
|
builder: &aster::AstBuilder,
|
|
fields: &[ast::StructField],
|
|
) -> Result<Vec<attr::FieldAttrs>, ()> {
|
|
let mut attrs = vec![];
|
|
for field in fields {
|
|
let builder = attr::FieldAttrsBuilder::new(cx, builder);
|
|
let builder = try!(builder.field(field));
|
|
let attr = builder.build();
|
|
attrs.push(attr);
|
|
}
|
|
|
|
Ok(attrs)
|
|
}
|
|
|
|
pub fn container_attrs(
|
|
cx: &ExtCtxt,
|
|
container: &ast::Item,
|
|
) -> Result<attr::ContainerAttrs, ()> {
|
|
let builder = attr::ContainerAttrsBuilder::new(cx);
|
|
let builder = try!(builder.attrs(container.attrs()));
|
|
Ok(builder.build())
|
|
}
|