10个版本 (4个重大更新)
0.4.1 | 2024年6月10日 |
---|---|
0.4.0 | 2024年6月7日 |
0.3.1 | 2024年6月4日 |
0.2.3 | 2024年5月19日 |
0.0.0 | 2024年5月8日 |
#617 in 算法
92KB
3K SLoC
anyrust
一个提供与JavaScript一样灵活和强大的类型系统的库。
使用方法
使用简单直观。你只需将值装箱到anyrust::Any类型中,并适当使用。
下面是一个简单示例。
use anyrust::*;
fn main() {
let a = any(5);
let b = any("10");
let result = a + b;
println!("result: {result}"); // result: 510
}
原始类型
基本整数类型、基本浮点类型、布尔类型和字符串类型与Any互转没有任何问题。
数组
数组通过anyrust::Array类型支持。这与Vec
let mut arr = array![1, 2, 3, 4, 5];
arr.push(4444);
arr.push("foo");
for e in arr {
println!("{e}");
}
映射
键值映射通过anyrust::Map类型支持。这与HashMap
let mut map = map!{
"name" => "John Doe",
"age" => 30,
};
map.set("is_adult", true);
println!("{}", map.to_string());
for (k, v) in map.to_map() {
println!("{}: {}", k, v);
}
函数
函数类型通过Function类型提供。你可以使用function!宏轻松创建它。
let add = function!(lhs, rhs => {
lhs + rhs
});
let result = add.call(array![1, 2]);
println!("Result: {}", result);
let four: Any = function!( => {
let sum = any(4444);
sum
});
let result = four.call(array![]);
println!("Result: {}", result);
你也可以通过>>操作符使用函数组合。
let add = function!(lhs, rhs => {
println!("lhs: {}, rhs: {}", lhs, rhs);
lhs + rhs
});
let negative = function!(num => {
num * any(-1)
});
let composite = add >> negative;
let result = composite.call(params![1, 2]);
println!("Result: {}", result); // -3
依赖
~24KB