mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-24 06:27:59 +00:00
Standardize on u32 as the type of a variant index
This commit is contained in:
+11
-5
@@ -6,6 +6,8 @@ use fragment::{Fragment, Stmts, Match};
|
||||
use internals::ast::{Body, Field, Item, Style, Variant};
|
||||
use internals::{self, attr};
|
||||
|
||||
use std::u32;
|
||||
|
||||
pub fn expand_derive_serialize(item: &syn::DeriveInput) -> Result<Tokens, String> {
|
||||
let ctxt = internals::Ctxt::new();
|
||||
let item = Item::from_ast(&ctxt, item);
|
||||
@@ -149,6 +151,8 @@ fn serialize_struct(ident: &syn::Ident,
|
||||
fields: &[Field],
|
||||
item_attrs: &attr::Item)
|
||||
-> Fragment {
|
||||
assert!(fields.len() as u64 <= u32::MAX as u64);
|
||||
|
||||
let serialize_fields =
|
||||
serialize_struct_visitor(ident,
|
||||
fields,
|
||||
@@ -187,13 +191,15 @@ fn serialize_item_enum(ident: &syn::Ident,
|
||||
variants: &[Variant],
|
||||
item_attrs: &attr::Item)
|
||||
-> Fragment {
|
||||
assert!(variants.len() as u64 <= u32::MAX as u64);
|
||||
|
||||
let arms: Vec<_> = variants.iter()
|
||||
.enumerate()
|
||||
.map(|(variant_index, variant)| {
|
||||
serialize_variant(ident,
|
||||
generics,
|
||||
variant,
|
||||
variant_index,
|
||||
variant_index as u32,
|
||||
item_attrs)
|
||||
})
|
||||
.collect();
|
||||
@@ -208,7 +214,7 @@ fn serialize_item_enum(ident: &syn::Ident,
|
||||
fn serialize_variant(ident: &syn::Ident,
|
||||
generics: &syn::Generics,
|
||||
variant: &Variant,
|
||||
variant_index: usize,
|
||||
variant_index: u32,
|
||||
item_attrs: &attr::Item)
|
||||
-> Tokens {
|
||||
let variant_ident = variant.ident.clone();
|
||||
@@ -292,7 +298,7 @@ fn serialize_variant(ident: &syn::Ident,
|
||||
fn serialize_externally_tagged_variant(ident: &syn::Ident,
|
||||
generics: &syn::Generics,
|
||||
variant: &Variant,
|
||||
variant_index: usize,
|
||||
variant_index: u32,
|
||||
item_attrs: &attr::Item)
|
||||
-> Fragment {
|
||||
let type_name = item_attrs.name().serialize_name();
|
||||
@@ -538,7 +544,7 @@ fn serialize_untagged_variant(ident: &syn::Ident,
|
||||
enum TupleVariant {
|
||||
ExternallyTagged {
|
||||
type_name: String,
|
||||
variant_index: usize,
|
||||
variant_index: u32,
|
||||
variant_name: String,
|
||||
},
|
||||
Untagged,
|
||||
@@ -589,7 +595,7 @@ fn serialize_tuple_variant(context: TupleVariant,
|
||||
|
||||
enum StructVariant<'a> {
|
||||
ExternallyTagged {
|
||||
variant_index: usize,
|
||||
variant_index: u32,
|
||||
variant_name: String,
|
||||
},
|
||||
InternallyTagged { tag: &'a str, variant_name: String },
|
||||
|
||||
Reference in New Issue
Block a user