@@ -6,7 +6,7 @@ use fp_rust::{
66 sync:: { CountDownLatch , Will , WillAsync } ,
77} ;
88use message:: LuaMessage ;
9- use rlua:: { Error , FromLuaMulti , Function , Lua , ToLuaMulti } ;
9+ use rlua:: { Error , FromLua , FromLuaMulti , Function , Lua , Table , ToLua , ToLuaMulti } ;
1010
1111#[ derive( Clone ) ]
1212pub struct Actor {
@@ -115,14 +115,24 @@ impl Actor {
115115 }
116116 }
117117 #[ inline]
118- fn _get_global ( lua : & Arc < Mutex < Lua > > , key : & str ) -> Result < LuaMessage , Error > {
119- let vm = lua. lock ( ) . unwrap ( ) ;
120- let globals = vm. globals ( ) ;
121- Ok ( globals. get :: < _ , LuaMessage > ( key) ?)
118+ pub fn get_global_raw < ' lua , K : ToLua < ' lua > , V : FromLua < ' lua > > (
119+ lua : & ' lua Lua ,
120+ key : K ,
121+ ) -> Result < V , Error > {
122+ lua. globals ( ) . get :: < _ , V > ( key)
122123 }
123124 #[ inline]
124- fn _get_global_function < ' lua > ( lua : & ' lua Lua , key : & str ) -> Result < Function < ' lua > , Error > {
125- Ok ( lua. globals ( ) . get :: < _ , Function < ' lua > > ( key) ?)
125+ pub fn get_global_function < ' lua > ( lua : & ' lua Lua , key : & str ) -> Result < Function < ' lua > , Error > {
126+ Self :: get_global_raw :: < _ , Function < ' lua > > ( lua, key)
127+ }
128+ #[ inline]
129+ pub fn get_global_table < ' lua > ( lua : & ' lua Lua , key : & str ) -> Result < Table < ' lua > , Error > {
130+ Self :: get_global_raw :: < _ , Table < ' lua > > ( lua, key)
131+ }
132+ #[ inline]
133+ fn _get_global ( lua : & Arc < Mutex < Lua > > , key : & str ) -> Result < LuaMessage , Error > {
134+ let vm = lua. lock ( ) . unwrap ( ) ;
135+ Self :: get_global_raw :: < _ , LuaMessage > ( & vm, key)
126136 }
127137
128138 #[ inline]
@@ -135,7 +145,7 @@ impl Actor {
135145 R : ToLuaMulti < ' callback > ,
136146 F : ' static + Send + Fn ( & ' callback Lua , A ) -> Result < R , Error > ,
137147 {
138- Ok ( lua. create_function ( func) ? )
148+ lua. create_function ( func)
139149 }
140150 #[ inline]
141151 pub fn def_fn_with_name < ' lua , ' callback , F , A , R > (
@@ -150,7 +160,7 @@ impl Actor {
150160 {
151161 let def = Self :: def_fn ( lua, func) ?;
152162 lua. globals ( ) . set ( key, def) ?;
153- Ok ( Self :: _get_global_function ( lua, key) ? )
163+ Self :: get_global_function ( lua, key)
154164 }
155165 pub fn def_fn_with_name_nowait < ' callback , F , A , R > (
156166 & self ,
@@ -184,8 +194,7 @@ impl Actor {
184194 source : & str ,
185195 name : Option < & str > ,
186196 ) -> Result < Function < ' lua > , Error > {
187- let vm = lua;
188- Ok ( vm. load ( source, name) ?)
197+ lua. load ( source, name)
189198 }
190199 pub fn load_nowait (
191200 & self ,
@@ -244,16 +253,14 @@ impl Actor {
244253 }
245254 #[ inline]
246255 fn _exec ( lua : & Arc < Mutex < Lua > > , source : & str , name : Option < & str > ) -> Result < LuaMessage , Error > {
247- let vm = lua. lock ( ) . unwrap ( ) ;
248- Ok ( vm. exec ( source, name) ?)
256+ lua. lock ( ) . unwrap ( ) . exec ( source, name)
249257 }
250258 #[ inline]
251259 pub fn exec_multi < ' lua , R > ( lua : & ' lua Lua , source : & str , name : Option < & str > ) -> Result < R , Error >
252260 where
253261 R : FromLuaMulti < ' lua > ,
254262 {
255- let vm = lua;
256- Ok ( vm. exec ( source, name) ?)
263+ lua. exec ( source, name)
257264 }
258265 pub fn eval (
259266 & self ,
@@ -272,16 +279,14 @@ impl Actor {
272279 }
273280 #[ inline]
274281 fn _eval ( lua : & Arc < Mutex < Lua > > , source : & str , name : Option < & str > ) -> Result < LuaMessage , Error > {
275- let vm = lua. lock ( ) . unwrap ( ) ;
276- Ok ( vm. eval ( source, name) ?)
282+ lua. lock ( ) . unwrap ( ) . eval ( source, name)
277283 }
278284 #[ inline]
279285 pub fn eval_multi < ' lua , R > ( lua : & ' lua Lua , source : & str , name : Option < & str > ) -> Result < R , Error >
280286 where
281287 R : FromLuaMulti < ' lua > ,
282288 {
283- let vm = lua;
284- Ok ( vm. eval ( source, name) ?)
289+ lua. eval ( source, name)
285290 }
286291
287292 pub fn call ( & self , name : & ' static str , args : LuaMessage ) -> Result < LuaMessage , Error > {
@@ -314,18 +319,17 @@ impl Actor {
314319 let vm = lua. lock ( ) . unwrap ( ) ;
315320 let func: Function = vm. globals ( ) . get :: < _ , Function > ( name) ?;
316321
317- Ok ( func. call :: < _ , LuaMessage > ( args) ? )
322+ func. call :: < _ , LuaMessage > ( args)
318323 }
319324 #[ inline]
320325 pub fn call_multi < ' lua , A , R > ( lua : & ' lua Lua , name : & str , args : A ) -> Result < R , Error >
321326 where
322327 A : ToLuaMulti < ' lua > + Send + Sync + Clone + ' static ,
323328 R : FromLuaMulti < ' lua > ,
324329 {
325- let vm = lua;
326- let func: Function = vm. globals ( ) . get :: < _ , Function > ( name) ?;
330+ let func: Function = lua. globals ( ) . get :: < _ , Function > ( name) ?;
327331
328- Ok ( func. call :: < _ , R > ( args) ? )
332+ func. call :: < _ , R > ( args)
329333 }
330334}
331335
0 commit comments