Struct Ident
pub struct Ident { /* private fields */ }
A word of Rust code, which may be a keyword or legal variable name.
An identifier consists of at least one Unicode code point, the first of which has the XID_Start property and the rest of which have the XID_Continue property.
- The empty string is not an identifier. Use
Option<Ident>. - A lifetime is not an identifier. Use
syn::Lifetimeinstead.
An identifier constructed with Ident::new is permitted to be a Rust
keyword, though parsing one through its Parse implementation rejects
Rust keywords. Use input.call(Ident::parse_any) when parsing to match the
behaviour of Ident::new.
Examples
A new ident can be created from a string using the Ident::new function.
A span must be provided explicitly which governs the name resolution
behavior of the resulting identifier.
use ;
An ident can be interpolated into a token stream using the quote! macro.
use ;
use quote;
A string representation of the ident is available through the to_string()
method.
# use ;
#
# let ident = new;
#
// Examine the ident as a string.
let ident_string = ident.to_string;
if ident_string.len > 60
Implementations
impl Ident
fn new(string: &str, span: Span) -> SelfCreates a new
Identwith the givenstringas well as the specifiedspan.The
stringargument must be a valid identifier permitted by the language, otherwise the function will panic.Note that
span, currently in rustc, configures the hygiene information for this identifier.As of this time
Span::call_site()explicitly opts-in to "call-site" hygiene meaning that identifiers created with this span will be resolved as if they were written directly at the location of the macro call, and other code at the macro call site will be able to refer to them as well.Later spans like
Span::def_site()will allow to opt-in to "definition-site" hygiene meaning that identifiers created with this span will be resolved at the location of the macro definition and other code at the macro call site will not be able to refer to them.Due to the current importance of hygiene this constructor, unlike other tokens, requires a
Spanto be specified at construction.Panics
Panics if the input string is neither a keyword nor a legal variable name. If you are not sure whether the string contains an identifier and need to handle an error case, use
syn::parse_str::<Ident>rather thanIdent::new.fn new_raw(string: &str, span: Span) -> SelfSame as
Ident::new, but creates a raw identifier (r#ident). Thestringargument must be a valid identifier permitted by the language (including keywords, e.g.fn). Keywords which are usable in path segments (e.g.self,super) are not supported, and will cause a panic.fn span(&self) -> SpanReturns the span of this
Ident.fn set_span(&mut self, span: Span)Configures the span of this
Ident, possibly changing its hygiene context.
Trait Implementations
impl Clone for Ident
fn clone(&self) -> Self
impl Debug for Ident
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Display for Ident
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Eq for Ident
impl Hash for Ident
fn hash<H: Hasher>(&self, hasher: &mut H)
impl Ord for Ident
fn cmp(&self, other: &Ident) -> Ordering
impl PartialEq for Ident
fn eq(&self, other: &Ident) -> bool
impl PartialOrd for Ident
fn partial_cmp(&self, other: &Ident) -> Option<Ordering>
impl<T> PartialEq<T> for Ident
where
T: ?Sized + AsRef<str>,
fn eq(&self, other: &T) -> bool
Auto Trait Implementations
impl !Send for Ident
impl !Sync for Ident
impl Freeze for Ident
impl RefUnwindSafe for Ident
impl Unpin for Ident
impl UnsafeUnpin for Ident
impl UnwindSafe for Ident
Blanket Implementations
impl<T> Any for Ident
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Ident
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Ident
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Ident
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for Ident
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Ident
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T> ToString for Ident
where
T: Display + ?Sized,
fn to_string(&self) -> String
impl<T, U> Into<U> for Ident
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Ident
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Ident
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>