mirror of
https://github.com/mlua-rs/mlua
synced 2026-06-08 16:05:43 +00:00
Remove generic from RawLua::push_userdata_metatable.
This should help to reduce amount of generated code.
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
use std::cell::Cell;
|
||||
use std::marker::PhantomData;
|
||||
use std::os::raw::c_int;
|
||||
|
||||
use super::UserDataStorage;
|
||||
use crate::util::{get_userdata, take_userdata};
|
||||
|
||||
// This is a trick to check if a type is `Sync` or not.
|
||||
// It uses leaked specialization feature from stdlib.
|
||||
@@ -29,3 +33,14 @@ pub(crate) fn is_sync<T>() -> bool {
|
||||
.clone();
|
||||
is_sync.get()
|
||||
}
|
||||
|
||||
pub(super) unsafe extern "C-unwind" fn userdata_destructor<T>(state: *mut ffi::lua_State) -> c_int {
|
||||
let ud = get_userdata::<UserDataStorage<T>>(state, -1);
|
||||
if !(*ud).is_borrowed() {
|
||||
take_userdata::<UserDataStorage<T>>(state);
|
||||
ffi::lua_pushboolean(state, 1);
|
||||
} else {
|
||||
ffi::lua_pushboolean(state, 0);
|
||||
}
|
||||
1
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user