Macros 将令牌名称作为字符串返回的Rust方法
Macros 将令牌名称作为字符串返回的Rust方法,macros,rust,Macros,Rust,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{ /* .
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
的实现之前,在这里提问是合理的,这将是我调查这一问题的下一步。不,这是不可能的。这两种构造在不同的上下文中在不同的时间执行
宏在编译过程中执行,因此可以访问有关原始源文件的所有信息。这意味着他们能够处理单个源令牌并基于它们执行操作
方法在程序本身运行时执行,并且只能访问其参数和全局变量。它们没有关于应用程序原始源代码的数据,因为这些信息没有存储在已编译的二进制文件中