Skip to content

Changing item definitions at compile time in Rust

Notifications You must be signed in to change notification settings

Shizcow/overrider-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

overrider-rs

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.

Using

Due to limitations in proc_macro, overrider requires the use of two crates:

  • overrider for code in src
  • overrider_build for a build script such as build.rs The code from above shows how to use the overrider 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.

About

Changing item definitions at compile time in Rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published