5个不稳定版本
0.3.1 | 2024年4月30日 |
---|---|
0.3.0 | 2024年4月30日 |
0.2.1 | 2024年4月30日 |
0.2.0 | 2024年4月30日 |
0.1.0 | 2024年4月29日 |
#1186 in Rust模式
26 每月下载量
16KB
329 行
nanoval - NaN标签值
此库提供了一种NaN标签值的实现,支持f64
、bool
、i32
、u32
、null值和指针的子集。每个值大小仅为8字节,并使用NaN值的大空间在单个64位双精度浮点值中存储额外信息。
此实现深受Wren编程语言的启发,尽管在某些方面有所不同。
如果您发现错误或有改进的想法,请提交一个问题或拉取请求。
希望您觉得这个库很有用!
用法
Value
类型可以从f64
、bool
、i32
、u32
、i64
、()
和任意T
的指针构建
use nanoval::Value;
fn creation() {
let double = Value::from(3.14);
let integer = Value::from(42);
let boolean = Value::from(true);
let null = Value::from(());
let pointee = 42;
let pointer = Value::try_from(&pointee as *const i32).unwrap();
}
构建的值可以转换回原始类型
fn getters() {
assert_eq!(double.as_f64(), Some(3.14));
assert_eq!(integer.as_int(), Some(42));
assert_eq!(boolean.as_bool(), Some(true));
assert!(null.is_null());
assert_eq!(pointer.as_pointer::<i32>(), Some(&pointee as *const i32));
}