有没有办法将函数名返回到Rust中的字符串?

有没有办法将函数名返回到Rust中的字符串?,rust,Rust,所以我的问题是这是否可能,如果可能,人们将如何实现这一点。 比如说, fn some_fn(){} let name = get_name_of(some_fn); println!({}, name); 哪个输出 some_fn 这样的实现可能吗?不,从1.44开始,目前似乎不可能实现 当然,根据您的用例,您仍然可以使用宏(例如)手动指定名称,或者使用设置给定函数的格式 例如,以下内容将打印fn:some\u fn: fn main() { println!("fn: {

所以我的问题是这是否可能,如果可能,人们将如何实现这一点。 比如说,

fn some_fn(){}
let name = get_name_of(some_fn);
println!({}, name);
哪个输出

some_fn

这样的实现可能吗?

不,从
1.44开始,目前似乎不可能实现

当然,根据您的用例,您仍然可以使用宏(例如)手动指定名称,或者使用设置给定函数的格式

例如,以下内容将打印
fn:some\u fn

fn main() {
    println!("fn: {}", std::stringify!(some_fn));
}

fn some_fn() {}
缺点是它只打印给定的参数,不允许您获取实际的函数名。下面是一个失败的示例,如
fn:f
和not
fn:some\u fn
将返回:

fn main(){
一些参数(和一些参数);
}
fn一些_fn(){}
fn一些参数(f:&dyn fn()){
println!(“fn:{}”,stringify!(f));
}
如评论中所述,有关
防锈的
的讨论可在此处跟踪:

听起来好像有人试图实现它,但没有完成