这是一个小例子:
extern crate hlua;
use hlua::*;
use std::rc::Rc;
use std::cell::{Cell, RefCell};
fn main() {
let lua = Rc::new(RefCell::new(Lua::new()));
lua.borrow_mut().set("x", 42);
{
let lua2 = lua.clone();
lua.borrow_mut().set("foo", function0(move ||{
lua2.borrow_mut().set("x", 1); // XXX thread 'main' panicked at 'already borrowed: BorrowMutError'
}));
}
let _ = lua.borrow_mut().execute::<()>("foo()");
println!("{}", lua.borrow_mut().get::<i32, _>("x").unwrap());
}
此代码在运行时在标记为XXX
的行处发生混乱。我得到lua
是在我拨打foo()
时借用的,但我没有看到其他办法。如何在导出的函数中使用lua
?