@@ -162,19 +162,19 @@ impl_build!(FunctionAfterValidator, "function-after");
162162impl FunctionAfterValidator {
163163 fn _validate < ' py , I : Input < ' py > + ?Sized > (
164164 & self ,
165- call : impl FnOnce ( & I , & mut ValidationState < ' _ , ' py > ) -> ValResult < PyObject > ,
165+ call : impl FnOnce ( & I , & mut ValidationState < ' _ , ' py > ) -> ValResult < Bound < ' py , PyAny > > ,
166166 py : Python < ' py > ,
167167 input : & I ,
168168 state : & mut ValidationState < ' _ , ' py > ,
169169 ) -> ValResult < PyObject > {
170170 let v = call ( input, state) ?;
171171 let r = if self . info_arg {
172172 let info = ValidationInfo :: new ( py, state. extra ( ) , & self . config , self . field_name . clone ( ) ) ;
173- self . func . call1 ( py, ( v. to_object ( py ) , info) )
173+ self . func . call1 ( py, ( v. clone ( ) , info) )
174174 } else {
175- self . func . call1 ( py, ( v. to_object ( py ) , ) )
175+ self . func . call1 ( py, ( v. clone ( ) , ) )
176176 } ;
177- r. map_err ( |e| convert_err ( py, e, input ) )
177+ r. map_err ( |e| convert_err ( py, e, v ) )
178178 }
179179}
180180
@@ -191,7 +191,9 @@ impl Validator for FunctionAfterValidator {
191191 input : & ( impl Input < ' py > + ?Sized ) ,
192192 state : & mut ValidationState < ' _ , ' py > ,
193193 ) -> ValResult < PyObject > {
194- let validate = |v : & _ , s : & mut ValidationState < ' _ , ' py > | self . validator . validate ( py, v, s) ;
194+ let validate = |v : & _ , s : & mut ValidationState < ' _ , ' py > | {
195+ self . validator . validate ( py, v, s) . map ( |object| object. into_bound ( py) )
196+ } ;
195197 self . _validate ( validate, py, input, state)
196198 }
197199 fn validate_assignment < ' py > (
@@ -203,7 +205,9 @@ impl Validator for FunctionAfterValidator {
203205 state : & mut ValidationState < ' _ , ' py > ,
204206 ) -> ValResult < PyObject > {
205207 let validate = move |v : & Bound < ' py , PyAny > , s : & mut ValidationState < ' _ , ' py > | {
206- self . validator . validate_assignment ( py, v, field_name, field_value, s)
208+ self . validator
209+ . validate_assignment ( py, v, field_name, field_value, s)
210+ . map ( |object| object. into_bound ( py) )
207211 } ;
208212 self . _validate ( validate, py, obj, state)
209213 }
0 commit comments