@@ -4,12 +4,10 @@ use crate::field_value::FieldValue;
44use crate :: utils:: { preserve_str_literal, to_type_string} ;
55use darling:: { FromAttributes , FromMeta } ;
66use proc_macro2:: TokenStream ;
7- use quote:: { ToTokens , quote } ;
7+ use quote:: ToTokens ;
88use std:: ops:: Deref ;
99use std:: rc:: Rc ;
10- use syn:: {
11- Attribute , Expr , ExprPath , Field as NativeField , FieldMutability , Ident , Visibility , parse_str,
12- } ;
10+ use syn:: { Attribute , Expr , ExprPath , Field as NativeField , FieldMutability , Ident , Visibility } ;
1311
1412// #[setting(nested)]
1513#[ derive( Debug ) ]
@@ -183,10 +181,6 @@ impl Field {
183181
184182 // nested
185183 if self . args . nested . is_some ( ) {
186- if self . args . default . is_some ( ) {
187- panic ! ( "Cannot use `default` with `nested`." ) ;
188- }
189-
190184 #[ cfg( feature = "env" ) ]
191185 if self . args . env . is_some ( ) {
192186 panic ! ( "Cannot use `env` with `nested`, use `env_prefix` instead?" ) ;
@@ -203,25 +197,31 @@ impl Field {
203197 }
204198}
205199
206- impl ToTokens for Field {
207- fn to_tokens ( & self , tokens : & mut TokenStream ) {
208- let mut value = self . value . ty_string . clone ( ) ;
200+ // impl ToTokens for Field {
201+ // fn to_tokens(&self, tokens: &mut TokenStream) {
202+ // let mut value = self.value.ty_string.clone();
209203
210- if let Some ( nested_ident) = & self . value . nested_ident {
211- let ident = nested_ident. to_string ( ) ;
204+ // if let Some(nested_ident) = &self.value.nested_ident {
205+ // let ident = nested_ident.to_string();
212206
213- value = value. replace ( & ident, & format ! ( "<{ident} as schematic::Config>::Partial" ) ) ;
214- }
207+ // value = value.replace(&ident, &format!("<{ident} as schematic::Config>::Partial"));
208+ // }
215209
216- if !self . value . is_outer_option_wrapped ( ) {
217- value = format ! ( "Option<{value}>" ) ;
218- }
210+ // if !self.value.is_outer_option_wrapped() {
211+ // value = format!("Option<{value}>");
212+ // }
213+
214+ // let key = self.ident.as_ref().unwrap();
215+ // let value: TokenStream = parse_str(&value).unwrap();
219216
220- let key = self . ident . as_ref ( ) . unwrap ( ) ;
221- let value: TokenStream = parse_str ( & value) . unwrap ( ) ;
217+ // tokens.extend(quote! {
218+ // pub #key: #value,
219+ // });
220+ // }
221+ // }
222222
223- tokens . extend ( quote ! {
224- pub #key : #value ,
225- } ) ;
223+ impl Field {
224+ pub fn impl_partial_default_value ( & self ) -> Option < TokenStream > {
225+ self . value . impl_partial_default_value ( & self . args )
226226 }
227227}
0 commit comments