pub struct Memoized {
pub to_value: Arc<dyn Fn(&Lua) -> Result<Value> + Send + Sync>,
}Expand description
Memoized is a helper type that allows native Rust types to be captured in memoization caches. Unfortunately, we cannot automatically make that work for all UserData that are exported to lua, but we can make it simple for a type to opt-in to that behavior.
When you impl UserData for your type, you can call
Memoized::impl_memoize(methods) from your add_methods impl.
That will add a metamethod to your UserData type that will clone your
value and wrap it into a Memoized wrapper.
Since Clone is used, it is recommended that you use an Arc inside your type to avoid making large or expensive clones.
Fields§
§to_value: Arc<dyn Fn(&Lua) -> Result<Value> + Send + Sync>Implementations§
Trait Implementations§
Source§impl UserData for Memoized
impl UserData for Memoized
§fn add_fields<F>(fields: &mut F)where
F: UserDataFields<Self>,
fn add_fields<F>(fields: &mut F)where
F: UserDataFields<Self>,
Adds custom fields specific to this userdata.
§fn add_methods<M>(methods: &mut M)where
M: UserDataMethods<Self>,
fn add_methods<M>(methods: &mut M)where
M: UserDataMethods<Self>,
Adds custom methods and operators specific to this userdata.
Auto Trait Implementations§
impl Freeze for Memoized
impl !RefUnwindSafe for Memoized
impl Send for Memoized
impl Sync for Memoized
impl Unpin for Memoized
impl !UnwindSafe for Memoized
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FromLuaMulti for Twhere
T: FromLua,
impl<T> FromLuaMulti for Twhere
T: FromLua,
§fn from_lua_multi(values: MultiValue, lua: &Lua) -> Result<T, Error>
fn from_lua_multi(values: MultiValue, lua: &Lua) -> Result<T, Error>
Performs the conversion. Read more
fn from_lua_args( args: MultiValue, i: usize, to: Option<&str>, lua: &Lua, ) -> Result<T, Error>
unsafe fn from_stack_multi(nvals: i32, lua: &RawLua) -> Result<T, Error>
unsafe fn from_stack_args( nargs: i32, i: usize, to: Option<&str>, lua: &RawLua, ) -> Result<T, Error>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoLua for Twhere
T: UserData + MaybeSend + 'static,
impl<T> IntoLua for Twhere
T: UserData + MaybeSend + 'static,
§impl<T> IntoLuaMulti for Twhere
T: IntoLua,
impl<T> IntoLuaMulti for Twhere
T: IntoLua,
§fn into_lua_multi(self, lua: &Lua) -> Result<MultiValue, Error>
fn into_lua_multi(self, lua: &Lua) -> Result<MultiValue, Error>
Performs the conversion.