有没有办法将函数名返回到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
和notfn:some\u fn
将返回:
fn main(){
一些参数(和一些参数);
}
fn一些_fn(){}
fn一些参数(f:&dyn fn()){
println!(“fn:{}”,stringify!(f));
}
如评论中所述,有关防锈的宏
的讨论可在此处跟踪:
听起来好像有人试图实现它,但没有完成