Comments (4)
If I correctly understand, you want something like this?
lazy_static::lazy_static! {
static ref ROWS: Mutex<Vec<HashMap<String, String>>> = Mutex::new(Vec::new());
}
pub struct V;
impl UserData for V {
fn add_methods<'lua, M: UserDataMethods<'lua, Self>>(methods: &mut M) {
methods.add_method("addRow", |_, _, t: HashMap<String, String>| {
ROWS.lock().unwrap().push(t);
Ok(())
});
}
}
fn main() -> Result<()> {
let lua = Lua::new();
lua.globals().set("v", V)?;
lua.load(r#"
v:addRow({ _type = "row", pos = 1 })
v:addRow({ _type = "row", pos = 2 })
"#).exec()?;
println!("added rows: {:?}", ROWS.lock().unwrap());
Ok(())
}
Or instead, if a global shared state is not desirable, other options could be
- Add
Arc<State>
to theV
fields and modify it. Multiple instances ofV
would share the sameState
. - Pass the
State
to Lua
from mlua.
Yeah, global state is not the best solution.
You mean, I can pass custom state to add_method
that I can then wrap into Arc
?
from mlua.
The first option:
https://gist.github.com/48ccbfb1a30ffa08bc7c69650ab5fefb
I modified the struct V
to explicitly include state.
The second option:
https://gist.github.com/rust-play/f73e7607726d9651d3d36a7560824510
without modifying the struct V
and passing State
as an associated value.
from mlua.
Thank you a lot for helping, really appreciate your time!
from mlua.
Related Issues (20)
- Ability to create Luau buffer from bytes / get bytes contents HOT 4
- Hello, is it possible for mlua to write a dll module for standard lua5.3 or lua5.4. HOT 2
- Soundness bug in mlua_sys's luau_compile HOT 2
- Lua::compile is not idiomatic HOT 7
- Lack of Floored Division Support for Luau HOT 2
- Serializing from `serde_json::Value` to `mlua::Value` when the `arbitrary_precision` feature is enabled HOT 2
- `AnyUserData::is` panics with unreachable code after being destructed with `AnyUserData::take` HOT 1
- Automatically generate definition files HOT 4
- Can't re export lua_module in own lib
- Can module mode works with async? HOT 2
- Difficulty creating a wrapper type HOT 1
- Support Audio manipulation HOT 2
- Support UI HOT 2
- Error compiling module to wasm32-unknown-emscripten
- Terra integration?
- Lifetime Issues with Scope HOT 3
- In a module best way to deal with async HOT 4
- Serialization: Recursive table detection yields false positives HOT 1
- Allow setting luau compiler options when loading with `require` HOT 2
- Builds fail with useless errors if user's global Cargo target-dir is changed HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mlua.