Alex Orlenko
201e30bc07
Add UserDataOwned<T> wrapper to take ownership of userdata T
...
It implements `FromLua` and takes ownership of a Lua userdata value.
The semantics is similar to `AnyUserData::take`, preventing any
further use from Lua.
Closes #686
2026-04-20 00:05:57 +01:00
Alex Orlenko
4e028d8409
Change AnyUserData::type_name to return LuaString instead.
...
This avoids unnecessary allocation and returns type name as it stored in metatable.
2026-04-19 23:26:24 +01:00
Alex Orlenko
eb76db59da
Make userdata module public
2026-02-22 19:52:57 +00:00
Alex Orlenko
c79b5e9cdb
cargo fmt
2026-01-29 23:03:56 +00:00
Alex Orlenko
2ace892613
Rename string::String to LuaString
2026-01-29 18:45:41 +00:00
Alex Orlenko
d9c139b55f
Rust 2024
2026-01-29 10:33:28 +00:00
Alex Orlenko
86d0c9bddb
More multi borrow "send" test fixes due to regression in Rust 1.93+
2026-01-22 23:08:17 +00:00
Alex Orlenko
77d7d5d6bd
Add initial Lua 5.5 support
2026-01-13 23:43:31 +00:00
psentee
ee9232eda1
AnyUserData::is_proxy ( #666 )
2026-01-13 15:08:38 +00:00
Alex Orlenko
a2728928cf
Temporary disable some send tests on nightly
...
Aparently there is a regression in the compiler and sync detection does not work correctly
2025-11-18 00:51:24 +00:00
Alex Orlenko
1152519074
Add add_method_once and add_async_method_once UserData methods (experimental).
...
They will allow implementing userdata methods that can be called only once, destructing
userdata instance during the call.
2025-10-26 20:14:46 +00:00
Alex Orlenko
40b507c3ec
Add ObjectLike::get_path helper
2025-09-04 19:12:44 +01:00
Alex Orlenko
5d27cb91b2
Add optional __namecall optimization for Luau
...
Add `UserDataRegistry::enable_namecall()` hint to set `__namecall` metamethod to enable Luau-specific method resolution optimization.
2025-09-02 00:53:12 +01:00
Alex Orlenko
f06d0020ea
Add test to emulate method through field
2025-08-28 23:50:18 +01:00
Alex Orlenko
7bc72be7d3
Use serde feature flag instead of serialize.
...
The old one is still supported.
2025-06-12 13:35:22 +01:00
Alex Orlenko
53ff494ab9
Prepare for custom (Luau) userdata destructors.
...
We need to add logic later to prevent calling any Lua functions when UserData destructor is running.
2025-04-04 16:36:06 +01:00
Alex Orlenko
c1a018a60d
Add AnyUserData::type_id method
2025-03-31 22:41:42 +01:00
Alex Orlenko
4fe7d151a1
Refactor userdata-wrappers feature.
...
Support borrowing underlying data in `UserDataRef` and `UserDataRefMut`.
2025-03-21 14:19:38 +00:00
Alex Orlenko
ae7cdcb934
Remove (internal) borrow counter and use instead "locked" flag and strong reference counter
2025-02-14 14:41:37 +00:00
Alex Orlenko
a7d0691e10
Add AnyUserData::destroy method
2024-11-07 16:12:20 +00:00
Alex Orlenko
c2eab173c5
Add userdata-wrappers feature
...
This feature allow to opt into `impl UserData` for `Rc<T>`/`Arc<T>`/`Rc<RefCell<T>>`/`Arc<Mutex<T>>` where `T: UserData`
Close #470
2024-11-03 11:48:47 +00:00
Alex Orlenko
2a8db87132
Update Value tests
2024-10-18 22:50:48 +01:00
Alex Orlenko
98339c57e6
Update userdata tests
2024-10-18 21:38:02 +01:00
Alex Orlenko
179c54f297
Remove generic from Table::equals and Value::equals
2024-10-16 16:11:48 +01:00
Alex Orlenko
8274b5fa88
More user-friendly error message on userdata mismatch
2024-09-23 15:56:29 +01:00
Alex Orlenko
e582e7c57f
Rename get_metatable to metatable for Table/AnyUserData types
2024-09-23 11:13:16 +01:00
Alex Orlenko
da4404baa5
Add Lua::scope back
2024-09-20 13:01:55 +01:00
Alex Orlenko
4018a17e26
Combine TableExt and AnyUserDataExt traits into ObjectLike
2024-08-30 22:50:03 +01:00
Alex Orlenko
6317b8e0c8
Test GC for nested userdata (userdata in userdata)
2024-08-25 21:02:12 +01:00
Alex Orlenko
9931709ecd
Remove explicit lifetime from UserDataMethods and UserDataFields traits.
...
Pass `'static` arguments to async functions and require `'static` Future.
(in future we can use async closures to make it more elegant).
2024-08-23 00:10:29 +01:00
Alex Orlenko
3641c98959
Prepare for Rust 2024 edition (see rust-lang/rust#123748 )
...
Replace `IntoLua(Multi)` generic with positional arg (impl trait) where possible
This allow to shorten syntax from `a.get::<_, T>` to `a.get::<T>`
2024-07-31 23:42:43 +01:00
Alex Orlenko
b4892c228c
Add rustfmt.toml
2024-07-31 13:42:37 +01:00
Alex Orlenko
550d6b2991
Remove wrapped UserData impl (Rc/Arc/etc)
2024-07-31 13:42:36 +01:00
Alex Orlenko
313117095c
Remove parking_lot feature flag
2024-07-31 13:42:35 +01:00
Alex Orlenko
7221051683
Refactor:
...
- Remove the rest of `'lua` lifetimes
- Remove Owned types
2024-07-31 13:42:35 +01:00
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