gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 11:25:53 26 4
gpt4 key购买 nike

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

fn some_fn(){}
let name = get_name_of(some_fn);
println!({}, name);
哪些输出
some_fn
这样的实现可能吗?

最佳答案

不,从 1.44 开始,这目前似乎不可能.
根据您的用例,您当然仍然可以使用宏手动指定名称,例如 println! 或使用 stringify! 格式化给定函数.
例如,以下将打印 fn: some_fn :

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

fn some_fn() {}
缺点是它只是打印给定的参数,不允许您获取实际的函数名称。这是一个失败的例子,如 fn: f而不是 fn: some_fn将返回:
fn main() {
some_fn_as_param(&some_fn);
}

fn some_fn() {}

fn some_fn_as_param(f: &dyn Fn()) {
println!("fn: {}", stringify!(f));
}
正如评论中提到的,谈论这样一个 macrorust可以在这里跟踪:
  • rust-lang/rfcs (issue), "Macro that expands into string holding function name (or module path, etc)"
  • rust-lang/rfcs (pr), "A macro to get the current function name."
  • 关于rust - 有没有办法将函数的名称返回到 Rust 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62701543/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com