Alex Orlenko
a79840afc9
Suppress Rust 1.77 dead_code false warnings.
2024-03-23 11:42:46 +00:00
Alex Orlenko
58be624222
Remove redundant "match" when checking userdata type via AnyUserData::is.
...
Fixes #386
2024-03-20 19:29:47 +00:00
Alex Orlenko
908f37656a
Add to_pointer function to Function/Table/Thread
2024-02-02 09:23:16 +00:00
Alex Orlenko
145c5b316b
Fix FromLua derive proc macro to cover more cases
2024-01-25 10:26:43 +00:00
Alex Orlenko
8200bee467
Implement IntoLua for ref to String/Table/Function/AnyUserData
...
This would prevent cloning plus has better performance when pushing values to Lua stack (`IntoLua::push_into_stack` method)
2024-01-23 22:14:50 +00:00
Alex Orlenko
53b7b5b70b
Fix setting userdata (static) fields when it has __index metamethod/function.
...
Closes #312
2023-08-27 23:01:37 +01:00
Alex Orlenko
a802276c56
Fix an edge case when using invalidated (relative) userdata index after processing varargs.
...
This causes Lua API correctness check assertion in debug mode.
Fixes #311 .
2023-08-24 00:54:50 +01:00
Alex Orlenko
3bda1351c3
Fix lua51/52 case in userdata tests
2023-07-26 23:18:30 +01:00
Alex Orlenko
4daa631178
Set __type metatable field for Luau instead of __name.
...
Other Lua versions continue to use `__name` field.
Also make `MetaMethod` enum non-exhaustive (and add `Type` variant)
Closes #295
2023-07-26 21:43:26 +01:00
Alex Orlenko
0e030d21b0
Add #[derive(FromLua)] macro to opt-in into FromLua<T> where T: 'static + Clone (userdata type).
...
Future macro implementations will allow making T from Lua tables/other values.
Relates to #291 .
2023-07-16 01:57:28 +01:00
Alex Orlenko
44b8c8b7a6
Add AnyUserData::wrap() to more easy way of creating _any_ userdata in Lua.
...
This is similar to `Function::wrap()`.
2023-07-10 16:36:38 +01:00
Alex Orlenko
01c1952c9f
Rename AnyUserData::get_*_user_value to AnyUserData::*_user_value.
...
To be more consistent with function like `Lua::named_registry_value`, `Lua::add_data_ref` and os on.
2023-07-09 23:50:44 +01:00
Alex Orlenko
b05698d55b
impl UserData for Rc<T> and Arc<T> where T: UserData
2023-06-21 01:30:09 +01:00
Alex Orlenko
5a135a331a
Add UserDataFields::add_field() method to add static fields to UserData.
...
Plus `UserDataFields::add_meta_field()` for static meta fields.
Fix propagating fields to wrapped UserData types.
2023-06-07 12:18:24 +01:00
Alex Orlenko
68e65a8ffe
Set __name field in userdata metatable if not provided
2023-05-25 10:59:46 +01:00
Alex Orlenko
bbd2488f79
Add OwnedAnyUserData::take()
2023-05-03 23:29:33 +01:00
Alex Orlenko
4daa7de997
Various improvements for owned types, including:
...
- tests
- shortcuts for `OwnedFunction` and `OwnedAnyUserData`
2023-04-26 15:40:48 +01:00
Alex Orlenko
03787668fd
Improve error reporting when calling Rust functions from Lua.
...
In particular new error type `Error::BadArgument` added to help identify bad argument position or name (eg `self` for userdata).
2023-03-14 23:23:46 +00:00
Alex Orlenko
68b60e2a0a
Add UserDataRef and UserDataRefMut types that implement FromLua
...
and can be used as accessors to underlying `AnyUserData` type.
2023-02-26 21:52:28 +00:00
Alex Orlenko
94f01e597c
Add AnyUserDataExt trait with auxiliary functions for AnyUserData
2023-02-18 23:40:28 +00:00
Alex Orlenko
47c8300ccf
Allow registering and creating custom userdata types that don't necessary implement the UserData trait.
...
This is useful to register 3rd party types that cannot implement `UserData` due to Rust orphan rules.
See #206
2023-02-03 23:46:04 +00:00
Alex Orlenko
8339621f9c
Rename to_lua_err -> into_lua_err
2023-01-06 21:35:15 +00:00
Alex Orlenko
d67332a3ac
Refactor userdata::MetaMethod.
...
Take `impl AsRef<str>` as name of metamethod (instead of `Into<MetaMethod>`) in UserDataMethods/UserDataFields.
Change position of generic args in userdata.
2022-12-24 19:16:58 +00:00
Alex Orlenko
61c285746c
Remove FromLua impl for UserData+Clone
2022-12-20 23:30:18 +00:00
Alex Orlenko
de38e299fc
Use impl AsRef<str> for userdata methods/fields instead of generic param.
...
Use `impl AsRef<str>` for module names and named registry values.
2022-12-18 00:35:41 +00:00
Alex Orlenko
7526773a90
Do not clear usevalues when taking value out of userdata.
...
It has big performance penalty.
Lua GC can collect uservalues when userdata is not referenced anymore.
2022-12-18 00:35:41 +00:00
Alex Orlenko
e7f494530f
Add Lua::create_proxy for easy access to UserData static fields and functions
...
Closes #178
2022-06-28 23:03:29 +01:00
Sondre Aasemoen
a5ce0c1409
Add parking_lot dependency and feature
2022-04-16 19:45:21 +02:00
Alex Orlenko
c322e028e2
Initial Luau support
2022-03-20 20:30:20 +00:00
Alex Orlenko
e2ebe65306
Add get_named_user_value and set_named_user_value to AnyUserData
2021-11-21 23:42:47 +00:00
Alex Orlenko
153502ec73
Add set_nth_user_value and get_nth_user_value to AnyUserData
...
with `n` up to 65535 for all Lua versions.
2021-11-08 21:16:31 +00:00
Alex Orlenko
806f0bcef4
Add luajit52 support (LuaJIT with partial compatibility with Lua 5.2)
2021-11-04 12:26:11 +00:00
Alex Orlenko
a544e41b33
Add (hidden) method UserData::take() to take out value from userdata
2021-10-05 15:46:50 +01:00
Alex Orlenko
242bdafa75
More tests for arc/rc wrapped userdata
2021-06-19 00:03:09 +01:00
Alex Orlenko
bf286751fa
Improve code coverage
2021-06-17 00:47:15 +01:00
Alex Orlenko
a944f4ad6f
Implement UserData for Rc<RefCell>/Arc<Mutex>/Arc<RwLock> wrappers
2021-06-03 16:42:55 +01:00
Alex Orlenko
c7541ef7d3
More tests
2021-04-27 00:29:38 +01:00
Alex Orlenko
decb5b9e37
Make MetaMethod::name() public
...
Tests for UserDataMetatable::pairs()
2021-04-27 00:29:37 +01:00
Alex Orlenko
2b2df708f9
Add UserDataFields API.
...
Provide safe access to UserData metatable and allow to define custom metamethods..
2021-04-27 00:29:37 +01:00
Alex Orlenko
e26cec5db9
Drop 'feature(link_args)' (removed from nightly). Don't run tests for LuaJIT 2.0.5
2021-04-16 22:27:28 +01:00
Alex Orlenko
3900e23839
Fix compilation warnings on nightly
2021-03-03 23:36:28 +00:00
Alex Orlenko
a9a4cf13f1
Add has_metamethod to AnyUserData
2020-06-06 16:07:16 +01:00
Alex Orlenko
2fd6757f39
Add LuaJIT 2.0.5 stable support
2020-06-06 16:07:16 +01:00
Alex Orlenko
526e7418d8
Add MetaMethod::Close to support Lua 5.4 to-be-closed variables
2020-05-12 02:14:47 +01:00
Alex Orlenko
539b569ff4
Add Lua 5.4 (rc2) support
2020-05-11 02:43:34 +01:00
Alex Orlenko
7b0e4b4280
Add Send capability to Lua
2020-05-11 02:43:34 +01:00
Alex Orlenko
47e8a80c1c
v0.3.0-alpha.1 with async support
...
Squashed commit of the async branch.
2020-04-17 22:39:50 +01:00
Alex Orlenko
e4dc773aa3
Remove __ipairs metamethod deprecated in lua 5.3 and not available by default
2020-01-25 20:47:36 +00:00
Alex Orlenko
07fc4642ae
Support vendored versions of Lua and LuaJIT
2020-01-25 20:47:31 +00:00
Alex Orlenko
5eec0ef56b
Implement PartialEq trait for Value (and subtypes)
...
Add equals() method to compare values optionally invoking __eq.
2020-01-07 00:03:03 +00:00