所以我的问题是这是否可能,如果可能,人们将如何实现这一点。例如,
fn some_fn(){}
let name = get_name_of(some_fn);
println!({}, name);
Run Code Online (Sandbox Code Playgroud)
哪些输出
some_fn
Run Code Online (Sandbox Code Playgroud)
这样的实现可能吗?
不,从1.44.
根据您的用例,您当然仍然可以使用宏手动指定名称,例如println!使用stringify!.
例如,以下将打印fn: some_fn:
fn main() {
println!("fn: {}", std::stringify!(some_fn));
}
fn some_fn() {}
Run Code Online (Sandbox Code Playgroud)
缺点是它只是打印给定的参数,不允许您获取实际的函数名称。这是一个失败的例子,因为fn: f和 notfn: some_fn将被返回:
fn main() {
println!("fn: {}", std::stringify!(some_fn));
}
fn some_fn() {}
Run Code Online (Sandbox Code Playgroud)
正如评论中提到的macro,rust可以在此处跟踪此类for 的讨论: