Easier to accept &str in Ident::new
diff --git a/src/ident.rs b/src/ident.rs
index 0e2d521..908326e 100644
--- a/src/ident.rs
+++ b/src/ident.rs
@@ -96,9 +96,7 @@
/// by the parser to create `Ident`s from existing Rust source code.
///
/// Creating new `Ident`s programmatically is easier with `Ident::from`.
- pub fn new(sym: Term, span: Span) -> Self {
- let s = sym.as_str();
-
+ pub fn new(s: &str, span: Span) -> Self {
if s.is_empty() {
panic!("ident is not allowed to be empty; use Option<Ident>");
}
@@ -134,7 +132,7 @@
}
Ident {
- sym: sym,
+ sym: Term::intern(s),
span: span,
}
}
@@ -142,43 +140,43 @@
impl<'a> From<&'a str> for Ident {
fn from(s: &str) -> Self {
- Ident::new(Term::intern(s), Span::default())
+ Ident::new(s, Span::default())
}
}
impl From<Token![self]> for Ident {
fn from(tok: Token![self]) -> Self {
- Ident::new(Term::intern("self"), tok.0)
+ Ident::new("self", tok.0)
}
}
impl From<Token![Self]> for Ident {
fn from(tok: Token![Self]) -> Self {
- Ident::new(Term::intern("Self"), tok.0)
+ Ident::new("Self", tok.0)
}
}
impl From<Token![super]> for Ident {
fn from(tok: Token![super]) -> Self {
- Ident::new(Term::intern("super"), tok.0)
+ Ident::new("super", tok.0)
}
}
impl From<Token![crate]> for Ident {
fn from(tok: Token![crate]) -> Self {
- Ident::new(Term::intern("crate"), tok.0)
+ Ident::new("crate", tok.0)
}
}
impl<'a> From<Cow<'a, str>> for Ident {
fn from(s: Cow<'a, str>) -> Self {
- Ident::new(Term::intern(&s), Span::default())
+ Ident::new(&s, Span::default())
}
}
impl From<String> for Ident {
fn from(s: String) -> Self {
- Ident::new(Term::intern(&s), Span::default())
+ Ident::new(&s, Span::default())
}
}