@@ -25,18 +25,12 @@ pub struct ResolvedOpArg {
2525}
2626
2727pub trait ResolvedOpArgExt : Sized {
28- type ValueType ;
29- type ValueRef < ' a > ;
30-
3128 fn expect_type ( self , expected_type : & ValueType ) -> Result < Self > ;
32- fn value < ' a > ( & self , args : & ' a Vec < value:: Value > ) -> Result < Self :: ValueRef < ' a > > ;
33- fn take_value ( & self , args : & mut Vec < value:: Value > ) -> Result < Self :: ValueType > ;
29+ fn value < ' a > ( & self , args : & ' a Vec < value:: Value > ) -> Result < & ' a value :: Value > ;
30+ fn take_value ( & self , args : & mut Vec < value:: Value > ) -> Result < value :: Value > ;
3431}
3532
3633impl ResolvedOpArgExt for ResolvedOpArg {
37- type ValueType = value:: Value ;
38- type ValueRef < ' a > = & ' a value:: Value ;
39-
4034 fn expect_type ( self , expected_type : & ValueType ) -> Result < Self > {
4135 if & self . typ . typ != expected_type {
4236 api_bail ! (
@@ -75,19 +69,24 @@ impl ResolvedOpArgExt for ResolvedOpArg {
7569}
7670
7771impl ResolvedOpArgExt for Option < ResolvedOpArg > {
78- type ValueType = Option < value:: Value > ;
79- type ValueRef < ' a > = Option < & ' a value:: Value > ;
80-
8172 fn expect_type ( self , expected_type : & ValueType ) -> Result < Self > {
8273 self . map ( |arg| arg. expect_type ( expected_type) ) . transpose ( )
8374 }
8475
85- fn value < ' a > ( & self , args : & ' a Vec < value:: Value > ) -> Result < Option < & ' a value:: Value > > {
86- self . as_ref ( ) . map ( |arg| arg. value ( args) ) . transpose ( )
76+ fn value < ' a > ( & self , args : & ' a Vec < value:: Value > ) -> Result < & ' a value:: Value > {
77+ Ok ( self
78+ . as_ref ( )
79+ . map ( |arg| arg. value ( args) )
80+ . transpose ( ) ?
81+ . unwrap_or ( & value:: Value :: Null ) )
8782 }
8883
89- fn take_value ( & self , args : & mut Vec < value:: Value > ) -> Result < Option < value:: Value > > {
90- self . as_ref ( ) . map ( |arg| arg. take_value ( args) ) . transpose ( )
84+ fn take_value ( & self , args : & mut Vec < value:: Value > ) -> Result < value:: Value > {
85+ Ok ( self
86+ . as_ref ( )
87+ . map ( |arg| arg. take_value ( args) )
88+ . transpose ( ) ?
89+ . unwrap_or ( value:: Value :: Null ) )
9190 }
9291}
9392
0 commit comments