From b2cf463ff8f12a080d7396792cc43c6490b10d97 Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Mon, 14 Jul 2025 19:15:05 +0300 Subject: [PATCH] fix: error types --- src/from_file.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/from_file.rs b/src/from_file.rs index df631a0..8357cd5 100644 --- a/src/from_file.rs +++ b/src/from_file.rs @@ -38,7 +38,10 @@ pub fn impl_from_file(input: &DeriveInput) -> Result { let mut default_bounds = Vec::new(); for field in fields { - let ident = field.ident.as_ref().unwrap(); + let ident = field + .ident + .as_ref() + .ok_or_else(|| Error::new_spanned(field, "Expected named fields"))?; let ty = &field.ty; let mut default_expr = None; @@ -78,11 +81,11 @@ pub fn impl_from_file(input: &DeriveInput) -> Result { } else { let mut where_clause = where_clause.cloned(); if let Some(wc) = &mut where_clause { - wc.predicates.extend( - default_bounds - .into_iter() - .map(|bound| parse2::(bound).unwrap()), - ); + for bound in default_bounds { + let predicate = parse2::(bound.clone()) + .map_err(|_| Error::new_spanned(&bound, "Failed to parse where predicate"))?; + wc.predicates.push(predicate); + } } else { where_clause = Some(parse_quote!(where #(#default_bounds),*)); }