4个版本
0.2.2 | 2024年7月15日 |
---|---|
0.2.1 | 2023年10月2日 |
0.2.0 | 2023年9月6日 |
0.1.0 | 2023年8月26日 |
#292 in WebAssembly
135 每月下载量
2.5MB
4.5K SLoC
emscripten-functions
此crate包含各种emscripten系统函数(使用rust-native参数和返回值类型制作),使得针对emscripten目标的Rust编程更加容易。以下emscripten头文件中的函数可用:
emscripten
console
示例
有关更多示例和Rust中emscripten的技巧,请参阅我的主项目的README。
从Rust运行javascript
使用emscripten_functions::emscripten::run_script
等函数系列,你可以在你的web应用中运行所需的javascript。
示例
// The `.escape_unicode()` method makes it safe to pass untrusted user input.
run_script(
format!(
r##"
document.querySelector("#this-is-secure").innerHTML = "{}"
"##,
"untrusted user input".escape_unicode()
)
);
主循环控制
如果你需要反复运行循环函数,emscripten有自己的主循环管理系统。使用emscripten_functions::emscripten::set_main_loop
和emscripten_functions::emscripten::set_main_loop_with_arg
函数,你可以将Rust函数作为主循环运行,并完全控制主循环的运行参数。
示例
struct GameData {
level: u32,
score: u32
}
let mut game_data = GameData {
level: 1,
score: 0
}
set_main_loop_with_arg(|data| {
if data.score < data.level {
data.score += 1;
} else {
data.score = 0;
data.level += 1;
}
// Here you call your display to screen functions.
// For demonstration purposes I chose `println!`.
println!("Score {}, level {}", data.score, data.level);
}, game_data, 0, true);