#type-alias #function #type

macro fn_type_alias

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

1 unstable release

0.1.0 Sep 23, 2021

#7 in #type-alias

Download history 38/week @ 2025-10-23 28/week @ 2025-10-30 26/week @ 2025-11-06 24/week @ 2025-11-13 23/week @ 2025-11-20 34/week @ 2025-11-27 33/week @ 2025-12-04 39/week @ 2025-12-11 39/week @ 2025-12-18 56/week @ 2025-12-25 26/week @ 2026-01-01 4/week @ 2026-01-08 34/week @ 2026-01-15 29/week @ 2026-01-22 36/week @ 2026-01-29 20/week @ 2026-02-05

120 downloads per month
Used in 2 crates (via gmod)

MIT license

6KB
73 lines

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!");
}

Dependencies

~1.5MB
~39K SLoC