#重载 #生命周期 #定义 #foo #语法 # #泛型

bin+lib 函数重载

一个添加函数重载功能的 crate

1 个不稳定版本

0.1.0 2024 年 8 月 8 日

#1305Rust 模式

Download history 104/week @ 2024-08-05

每月 104 次下载

MIT 许可证

5KB
64

函数重载

这是一个通过 Rust 宏添加函数重载的 Rust 库。它支持常规函数语法,但目前不支持异步、泛型或生命周期等高级功能。

用法

使用 def! 宏定义重载函数

def! {
    foo, // The name of the function
    fn (a: u32, b: u32) {
        println!("{}", a + b);
    }, // The comma is not optional
    fn (s: &str) -> () { // you dont need the return type explicitly
        println!("{}", s);
    },
    fn (s: char) -> String { // You can also have different return types
       return s.to_string();
    } // You can add a comma at the end, but it's not required
}

您可以通过像调用宏一样调用重载函数来使用它

fn main() {
    foo!(1, 2); // Outputs: 3
    foo!("bar"); // Outputs: bar
    let bar: String = foo!('a');
}

未来计划

  • 改进语法:使语法更类似于定义函数。
  • 新增功能:添加对泛型、生命周期、异步函数等的支持。
  • Proc 宏:使用 proc 宏来使 -> () 隐式。
    • 结果发现,我并不需要 proc 宏来完成这个任务
  • 添加到 crates.io

依赖项

~4KB