@@ -232,14 +232,22 @@ fn test_owned_anyuserdata_into_lua() -> Result<()> {
232
232
fn test_registry_value_into_lua ( ) -> Result < ( ) > {
233
233
let lua = Lua :: new ( ) ;
234
234
235
- let t = lua. create_table ( ) ?;
236
- let r = lua. create_registry_value ( t) ?;
237
- let f = lua. create_function ( |_, t : Table | t. raw_set ( "hello" , "world" ) ) ?;
235
+ // Direct conversion
236
+ let s = lua. create_string ( "hello, world" ) ?;
237
+ let r = lua. create_registry_value ( & s) ?;
238
+ let value1 = lua. pack ( & r) ?;
239
+ let value2 = lua. pack ( r) ?;
240
+ assert_eq ! ( value1. as_str( ) , Some ( "hello, world" ) ) ;
241
+ assert_eq ! ( value2. to_pointer( ) , value2. to_pointer( ) ) ;
238
242
239
- f. call ( & r) ?;
240
- let v = r. into_lua ( & lua) ?;
241
- let t = v. as_table ( ) . unwrap ( ) ;
243
+ // Push into stack
244
+ let t = lua. create_table ( ) ?;
245
+ let r = lua. create_registry_value ( & t) ?;
246
+ let f = lua. create_function ( |_, ( t, k, v) : ( Table , Value , Value ) | t. set ( k, v) ) ?;
247
+ f. call ( ( & r, "hello" , "world" ) ) ?;
248
+ f. call ( ( r, "welcome" , "to the jungle" ) ) ?;
242
249
assert_eq ! ( t. get:: <_, String >( "hello" ) ?, "world" ) ;
250
+ assert_eq ! ( t. get:: <_, String >( "welcome" ) ?, "to the jungle" ) ;
243
251
244
252
// Try to set nil registry key
245
253
let r_nil = lua. create_registry_value ( Value :: Nil ) ?;
0 commit comments