3 个版本
0.1.2 | 2023年7月23日 |
---|---|
0.1.1 | 2023年7月23日 |
0.1.0 | 2023年7月23日 |
#1252 in 开发工具
12KB
116 代码行
重载函数 (overfn)
此包允许您通过 overload
宏来重载具有相同名称但参数数量不同的函数。在重载所有函数后,您需要使用 macros!()
宏来生成调用重载函数的宏。
示例
use overfn::*;
#[overload]
fn test(item: usize) -> usize {
item
}
#[overload]
fn test(left: usize, right: usize) -> usize {
left + right
}
struct Test(usize);
impl Test {
#[overload(Test)]
fn new() -> Self {
Self(0)
}
#[overload(Test)]
fn new(item: usize) -> Self {
Self(item)
}
#[overload(Test)]
fn test(&self) -> usize {
self.0
}
#[overload(Test)]
fn test(&self, other: usize) -> usize {
self.0 + other
}
}
macros!();
assert_eq!(test!(2), 2);
assert_eq!(test!(2, 2), 4);
let test = Test_new!();
assert_eq!(test.0, 0);
let test = Test_new!(2);
assert_eq!(test.0, 2);
assert_eq!(Test_test!(test), 2);
assert_eq!(Test_test!(test, 2), 4);
文档
您可以在 此处 找到文档。
限制
- 目前,您不能重载具有不同类型但参数数量相同的函数。
- 您需要使用
macros!()
宏来生成调用重载函数的宏。 - 如果您重载类方法或实例方法,需要在属性中传递类名。
许可证
本项目可根据您的选择,在 MIT 许可证 或 Apache 许可证 2.0 版 下使用。
依赖项
~300–770KB
~18K SLoC