overrider
is a set of Rust crates that provide overloading of functions, methods, and more. For example:
// main.rs
use overrider::*;
#[default]
fn foo() {
println!("Hello World");
}
Calling foo()
will print Hello World
. However, if an override_default
version
of foo
is defined:
// main.rs
use overrider::*;
#[default]
fn foo() {
println!("Hello World");
}
#[override_default]
fn foo() {
println!("Hello Za Warudo");
}
Calling foo()
will now print Hello Za Warudo
. The first function definition may remain.
Due to limitations in proc_macro
, overrider
requires the use of two crates:
overrider
for code insrc
overrider_build
for a build script such asbuild.rs
The code from above shows how to use theoverrider
crate. Below is how to use the build portion:
// build.rs
use overrider_build::watch_files;
fn main() {
watch_files!("src/main.rs");
}
For examples, see the git repo.