Skip to content

✨ A proc attribute macro that generates a type alias with the given identifier for the attributed function

License

Notifications You must be signed in to change notification settings

WilliamVenner/fn_type_alias

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

crates.io

fn_type_alias

A proc attribute macro that generates a type alias with the given identifier for the attributed function.

Example

#[macro_use]
extern crate fn_type_alias;

#[type_alias(HelloWorldFn)] // The type alias will inherit its visibility from the function
pub(super) fn hello_world() {
    println!("hello world!");
}

#[type_alias(pub(crate), HelloWorldFn)] // The type alias will be pub(crate), but the function will be pub
pub fn hello_world() {
    println!("hello world!");
}

Use Case

This macro is well suited for conditional compilation. For example, using the fn_abi macro:

#[macro_use]
extern crate fn_type_alias;

#[macro_use]
extern crate fn_abi;

#[abi(
    linux32 = "C",
    linux64 = "C",
    win32 = "thiscall",
    win64 = "stdcall"
)]
#[type_alias(HelloWorldFn)]
pub extern fn hello_world() {
    println!("hello world!");
}

// Expands to when building for Windows 64-bit:
pub type HelloWorldFn = extern "stdcall" fn();
pub extern "stdcall" fn hello_world() {
    println!("hello world!");
}

About

✨ A proc attribute macro that generates a type alias with the given identifier for the attributed function

Topics

Resources

License

Stars

Watchers

Forks

Languages