2 个版本
使用旧 Rust 2015
0.0.2 | 2016 年 4 月 1 日 |
---|---|
0.0.1 | 2016 年 4 月 1 日 |
#2507 在 开发工具
405KB
12K SLoC
flu
flu 是在 Rust 编程语言中处理 Lua 5.1 的框架。它旨在提供对核心 Lua 概念的近似安全抽象——但也提供了对 Lua 栈的不安全访问。
它看起来是什么样子的?
要通过 flu 与 Lua 交互,您必须首先创建一个 flu::LuaContext
。您可以这样做,通过封装现有的 *mut lua_State
,或者通过使用 flu::LuaContext::new()
来初始化一个新实例。
let cxt = flu::LuaContext::new();
// or
let wrapped_cxt = flu::LuaContext::from_state(lua_state);
抽象
待办事项
栈
修改栈很容易。 flu::LuaContext
有一个名为 push
的函数,其定义如下
pub fn push<T>(&self, val: T)
where T: Push {
val.push(self);
}
这基本上意味着实现了 Push
特性的任何内容都可以推入栈中。默认情况下,Push
为以下类型实现了
nil
(一个单元结构体)布尔值
i8
、i16
、i32
f32
、f64
&str
、String
Option<T:Push>
(A,B, ...) 其中A:Push,B:Push, ...
在从栈中读取时,这也同样成立。flu 提供了另一个名为 Read
的 trait,允许实现该 trait 的类型被读取回 Rust(Read
也为前面提到的类型实现了)。
flu::LuaContext
有两个用于从栈中读取值的方法——read
和 pop
。将值推入栈然后读取的一个简单示例可能如下所示
let cxt = flu::LuaContext::new();
cxt.push("hello world!");
let val = cxt.pop::<&str>();
assert_eq!(val, "hello world!");
许可证
许可方式为以下之一
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,应如上双重授权,不附加任何额外条款或条件。