#name #macro #function #methods

no-std fn_name

生成调用其内的函数名称的宏

1 个不稳定版本

0.1.0 2022年5月11日

#2653Rust 模式

Download history 180/week @ 2024-04-03 180/week @ 2024-04-10 221/week @ 2024-04-17 263/week @ 2024-04-24 427/week @ 2024-05-01 146/week @ 2024-05-08 219/week @ 2024-05-15 149/week @ 2024-05-22 187/week @ 2024-05-29 290/week @ 2024-06-05 177/week @ 2024-06-12 205/week @ 2024-06-19 161/week @ 2024-06-26 125/week @ 2024-07-03 136/week @ 2024-07-10 236/week @ 2024-07-17

每月下载量 691
用于 9 个包(通过 veilid-tools

MIT/Apache 协议

7KB

fn_name

生成调用其内的函数名称的宏。

未实例化的名称

uninstantiated! 宏生成周围函数或方法的名称,不包括 实例化的泛型;例如。

struct GenericType<A>(A);

impl<A> GenericType<A> {
    fn generic_method<B>(self, _: B) -> &'static str {
        fn_name::uninstantiated!()
    }
}

fn main() {
    assert_eq!(
        GenericType(42u8).generic_method(false),
        "GenericType<_>::generic_method"
    );
}

实例化的名称

instantiated! 宏生成周围函数或方法的名称,包括 实例化的泛型(如果有);例如。

struct GenericType<A>(A);

impl<A> GenericType<A> {
    fn generic_method<B>(self, _: B) -> &'static str {
        fn_name::instantiated!()
    }
}

fn main() {
    assert_eq!(
        GenericType(42u8).generic_method(false),
        "GenericType<u8>::generic_method<bool>"
    );
}

限制

这些宏的展开目前不可进行恒等评估;它们的实现依赖于 core::any::type_name,它不是一个 const fn

无运行时依赖