7 个不稳定版本 (3 个破坏性更新)
0.4.1 | 2019 年 8 月 8 日 |
---|---|
0.4.0 | 2019 年 8 月 8 日 |
0.3.1 | 2019 年 7 月 19 日 |
0.2.0 | 2019 年 7 月 13 日 |
0.1.1 | 2019 年 7 月 13 日 |
#1705 在 过程宏
17KB
338 行
overloadable
使用 nightly 功能轻松在 Rust 中使用可重载函数。
此 crate 提供了类似于 C# 或 C++ 的函数重载功能,包括对元属性、类型参数和约束以及可见性修饰符的支持。请访问文档获取更多信息。
注意
这是一个 nightly crate。您必须在代码中包含以下行才能编译此 crate
#![feature(unboxed_closures, fn_traits)]
示例
#![feature(unboxed_closures, fn_traits)]
use overloadable::overloadable;
overloadable! {
pub func as
#[inline(always)]
fn(x: usize, y: usize) -> usize {
x * y
},
fn<'a>(x: &'a usize) -> f32 {
*x as f32
},
fn<'a, T>(x: &'a [T]) -> &'a T where T: std::fmt::Debug {
println!("Found {:?}", &x[0]);
&x[0]
}
}
fn foo() {
assert_eq!(func(2, 3), 6);
assert_eq!(func(&32), 32.0);
assert_eq!(func(&[1, 2, 3, 4][..]), &0);
}
依赖关系
~2MB
~46K SLoC