stringify
宏返回传递给它的标记的字符串:
struct A;
fn main() {
let my_identifier = A {};
assert!(stringify!(my_identifier) == "my_identifier");
}
有没有办法让方法返回调用它的令牌的字符串?
类似的东西:
struct A;
impl A {
fn token_to_string(&self) -> &str{
/* ... */
}
}
fn main() {
let my_identifier = A {};
assert!(my_identifier.token_to_string() == "my_identifier");
}
谷歌搜索这个并不富有成效。我不确定它是否可行,但我认为在深入研究stringify
的实施之前先问这个是合理的,这将是我调查此事的下一步。
答案 0 :(得分:2)
不,这是不可能的。这两个结构在不同的上下文中的不同时间执行。
宏在编译过程中执行,因此可以访问有关原始源文件的所有信息。这意味着他们能够处理单个源令牌并基于它们执行操作。
方法在程序本身运行时执行,并且只能访问其参数和全局变量。它们没有关于应用程序原始源代码的数据,因为该信息不存储在已编译的二进制文件中。