18 lines
472 B
Rust
18 lines
472 B
Rust
use proc_macro2::{Ident, Span, TokenStream, TokenTree};
|
|
|
|
use std::str::FromStr;
|
|
|
|
pub fn new_raw(string: &str, span: Span) -> Ident {
|
|
// Validate that it is an ident.
|
|
let _ = Ident::new(string, span);
|
|
|
|
let s = format!("r#{}", string);
|
|
let tts = TokenStream::from_str(&s).unwrap();
|
|
let mut ident = match tts.into_iter().next().unwrap() {
|
|
TokenTree::Ident(ident) => ident,
|
|
_ => unreachable!(),
|
|
};
|
|
ident.set_span(span);
|
|
ident
|
|
}
|