### Types map
Primitive
| Rust | Lua |
| ----------------------------------------- | --------------- |
| i8/i16/i32/i64/isize/u8/u16/u32/u64/usize | number(integer) |
| f32/f64 | number(float) |
| `&str`/`&[u8]`/String/`Cow<str>` | string |
Collections
| Rust | Lua |
| ------------- | ----- |
| Vec<T> | table |
| HashMap<K, V> | table |
Builtin Std
| Rust | Lua |
| ----------------------------------------- | --------------- |
| i8/i16/i32/i64/isize/u8/u16/u32/u64/usize | number(integer) |
| f32/f64 | number(float) |
| `&str`/`&[u8]`/String/`Cow<str>` | string |
### How to bind iterator
### How to bind async block
### The difference between `new_closure`, `new_function`
### Why efficient
`ValRef`
### Why ergonomic
* Stack slot auto manager
* Iterator
* Userdata
### Not always completely safe
有几种不安全的场景,由于实现方法的限制以及性能提升的考虑,没有在库的层面去加以限制,这意味着就算可以编译过去也不一定是完全安全的
1. set_closure `&'static`的绑定
2. 非`static`的userdata绑定