将字符串转换为 TokenStream
Convert string into TokenStream
给定一个字符串 (str
),如何在 Rust 中将其转换为 TokenStream
?
我试过使用 quote!
宏。
let str = "4";
let tokens = quote! { let num = #str; }; // #str is a str not i32
这里的目标是为一些未知的代码字符串生成标记。
let thing = "4";
let tokens = quote! { let thing = #thing }; // i32
或
let thing = ""4"";
let tokens = quote! { let thing = #thing }; // str
how can one convert [a string] into a TokenStream
Rust 有一个共同的特点,即在转换可能失败时将字符串转换为值:FromStr
. This is usually accessed via the parse
&str
上的方法。
proc_macro2::TokenStream
use proc_macro2; // 0.4.24
fn example(s: &str) {
let stream: proc_macro2::TokenStream = s.parse().unwrap();
}
proc_macro::TokenStream
extern crate proc_macro;
fn example(s: &str) {
let stream: proc_macro::TokenStream = s.parse().unwrap();
}
您应该知道,此代码不能 运行 在实际程序宏的调用之外。
给定一个字符串 (str
),如何在 Rust 中将其转换为 TokenStream
?
我试过使用 quote!
宏。
let str = "4";
let tokens = quote! { let num = #str; }; // #str is a str not i32
这里的目标是为一些未知的代码字符串生成标记。
let thing = "4";
let tokens = quote! { let thing = #thing }; // i32
或
let thing = ""4"";
let tokens = quote! { let thing = #thing }; // str
how can one convert [a string] into a
TokenStream
Rust 有一个共同的特点,即在转换可能失败时将字符串转换为值:FromStr
. This is usually accessed via the parse
&str
上的方法。
proc_macro2::TokenStream
use proc_macro2; // 0.4.24
fn example(s: &str) {
let stream: proc_macro2::TokenStream = s.parse().unwrap();
}
proc_macro::TokenStream
extern crate proc_macro;
fn example(s: &str) {
let stream: proc_macro::TokenStream = s.parse().unwrap();
}
您应该知道,此代码不能 运行 在实际程序宏的调用之外。