overfn 0.1.1

Simple overloading system for functions with different arguments
Documentation
# Overload functions (overfn)


This crate allows you to overload functions with the same name but with different number of arguments through the
[`overload`](https://docs.rs/overfn/latest/overfn/macro.overload.html) macro. After overloading all the functions, you 
need to use the [`macros!()`](https://docs.rs/overfn/latest/overfn/macro.macros.html) to genarate the macros to invoke 
the overloaded functions.

## Example


```rust
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);
```

## Documentation


You can find the documentation [here](https://docs.rs/overfn).

## Limitations


- Curretly, you can't overload a function with the same number of arguments with different types.
- You need to use the [`macros!()`]https://docs.rs/overfn/latest/overfn/macro.macros.html macro to generate the macros
  to call the overloaded functions.
- If you overload a class method or instance method, you need to pass the class name in the attribute.

## License


This project is licensed under the [MIT license](LICENSE-MIT) or [Apache License, Version 2.0](LICENSE-APACHE) at your option.