don't create and drop a new function every call

This commit is contained in:
Quaternions 2024-10-06 16:00:14 -07:00
parent 9a03ac199a
commit 3ad9d45452

View File

@ -1,4 +1,4 @@
use std::collections::HashMap;
use std::collections::{hash_map::Entry,HashMap};
use mlua::{FromLua,FromLuaMulti,IntoLua,IntoLuaMulti};
use rbx_types::Ref;
@ -404,9 +404,12 @@ impl ClassMethods<'_>{
fn get_or_create_function(&mut self,lua:&mlua::Lua,index:&str)->mlua::Result<Option<mlua::Function>>{
Ok(match self.method_pointers.get_entry(index){
Some((&static_index_str,&function_pointer))=>Some(
self.methods.entry(static_index_str)
.or_insert(lua.create_function(function_pointer)?)
.clone()
match self.methods.entry(static_index_str){
Entry::Occupied(entry)=>entry.get().clone(),
Entry::Vacant(entry)=>entry.insert(
lua.create_function(function_pointer)?
).clone(),
}
),
None=>None,
})