diff --git a/serde_codegen/src/attr.rs b/serde_codegen/src/attr.rs index ca6735cf..10f77bf3 100644 --- a/serde_codegen/src/attr.rs +++ b/serde_codegen/src/attr.rs @@ -137,12 +137,12 @@ impl ContainerAttrs { self.deny_unknown_fields } - pub fn ser_where(&self) -> Option<&Vec> { - self.ser_where.as_ref() + pub fn ser_where(&self) -> Option<&[ast::WherePredicate]> { + self.ser_where.as_ref().map(Vec::as_slice) } - pub fn de_where(&self) -> Option<&Vec> { - self.de_where.as_ref() + pub fn de_where(&self) -> Option<&[ast::WherePredicate]> { + self.de_where.as_ref().map(Vec::as_slice) } } @@ -361,12 +361,12 @@ impl FieldAttrs { self.deserialize_with.as_ref() } - pub fn ser_where(&self) -> Option<&Vec> { - self.ser_where.as_ref() + pub fn ser_where(&self) -> Option<&[ast::WherePredicate]> { + self.ser_where.as_ref().map(Vec::as_slice) } - pub fn de_where(&self) -> Option<&Vec> { - self.de_where.as_ref() + pub fn de_where(&self) -> Option<&[ast::WherePredicate]> { + self.de_where.as_ref().map(Vec::as_slice) } } diff --git a/serde_codegen/src/bound.rs b/serde_codegen/src/bound.rs index 7ec11316..cdbe5fa1 100644 --- a/serde_codegen/src/bound.rs +++ b/serde_codegen/src/bound.rs @@ -27,10 +27,10 @@ pub fn without_defaults(generics: &ast::Generics) -> ast::Generics { pub fn with_where_predicates( builder: &AstBuilder, generics: &ast::Generics, - predicates: &Vec, + predicates: &[ast::WherePredicate], ) -> ast::Generics { builder.from_generics(generics.clone()) - .with_predicates(predicates.clone()) + .with_predicates(predicates.to_vec()) .build() } @@ -41,14 +41,14 @@ pub fn with_where_predicates_from_fields( generics: &ast::Generics, from_field: F, ) -> Result - where F: Fn(&attr::FieldAttrs) -> Option<&Vec>, + where F: Fn(&attr::FieldAttrs) -> Option<&[ast::WherePredicate]>, { Ok(builder.from_generics(generics.clone()) .with_predicates( try!(all_fields_with_attrs(cx, item)) .iter() .flat_map(|&(_, ref attrs)| from_field(attrs)) - .flat_map(|predicates| predicates.clone())) + .flat_map(|predicates| predicates.to_vec())) .build()) }