Implement new BeaconStateTypes trait in types

This commit is contained in:
Paul Hauner
2019-05-08 13:08:37 +10:00
parent 009d05cafd
commit 5ba069c774
52 changed files with 323 additions and 144 deletions

View File

@@ -100,6 +100,7 @@ pub fn ssz_encode_derive(input: TokenStream) -> TokenStream {
let item = parse_macro_input!(input as DeriveInput);
let name = &item.ident;
let (impl_generics, ty_generics, where_clause) = &item.generics.split_for_impl();
let struct_data = match &item.data {
syn::Data::Struct(s) => s,
@@ -109,7 +110,7 @@ pub fn ssz_encode_derive(input: TokenStream) -> TokenStream {
let field_idents = get_serializable_named_field_idents(&struct_data);
let output = quote! {
impl ssz::Encodable for #name {
impl #impl_generics ssz::Encodable for #name #ty_generics #where_clause {
fn ssz_append(&self, s: &mut ssz::SszStream) {
#(
s.append(&self.#field_idents);
@@ -140,6 +141,7 @@ pub fn ssz_decode_derive(input: TokenStream) -> TokenStream {
let item = parse_macro_input!(input as DeriveInput);
let name = &item.ident;
let (impl_generics, ty_generics, where_clause) = &item.generics.split_for_impl();
let struct_data = match &item.data {
syn::Data::Struct(s) => s,
@@ -169,7 +171,7 @@ pub fn ssz_decode_derive(input: TokenStream) -> TokenStream {
}
let output = quote! {
impl ssz::Decodable for #name {
impl #impl_generics ssz::Decodable for #name #ty_generics #where_clause {
fn ssz_decode(bytes: &[u8], i: usize) -> Result<(Self, usize), ssz::DecodeError> {
#(
#quotes