[−][src]Struct syntax::symbol::Symbol
A symbol is an interned or gensymed string. A gensym is a symbol that is never equal to any other symbol.
Conceptually, a gensym can be thought of as a normal symbol with an
invisible unique suffix. Gensyms are useful when creating new identifiers
that must not match any existing identifiers, e.g. during macro expansion
and syntax desugaring. Because gensyms should always be identifiers, all
gensym operations are on Ident
rather than Symbol
. (Indeed, in the
future the gensym-ness may be moved from Symbol
to hygiene data.)
Examples:
assert_eq!(Ident::from_str("x"), Ident::from_str("x")) assert_ne!(Ident::from_str("x").gensym(), Ident::from_str("x")) assert_ne!(Ident::from_str("x").gensym(), Ident::from_str("x").gensym())
Internally, a symbol is implemented as an index, and all operations
(including hashing, equality, and ordering) operate on that index. The use
of newtype_index!
means that Option<Symbol>
only takes up 4 bytes,
because newtype_index!
reserves the last 256 values for tagging purposes.
Note that Symbol
cannot directly be a newtype_index!
because it
implements fmt::Debug
, Encodable
, and Decodable
in special ways.
Methods
impl Symbol
[src]
pub fn intern(string: &str) -> Symbol
[src]
Maps a string to its interned representation.
pub fn as_str(self) -> LocalInternedString
[src]
pub fn as_interned_str(self) -> InternedString
[src]
pub fn as_u32(self) -> u32
[src]
impl Symbol
[src]
pub fn is_doc_keyword(self) -> bool
[src]
Used for sanity checking rustdoc keyword sections.
pub fn is_path_segment_keyword(self) -> bool
[src]
A keyword or reserved identifier that can be used as a path segment.
pub fn can_be_raw(self) -> bool
[src]
This symbol can be a raw identifier.
Trait Implementations
impl Debug for Symbol
[src]
impl Hash for Symbol
[src]
fn hash<__H>(&self, state: &mut __H) where
__H: Hasher,
[src]
__H: Hasher,
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl Encodable for Symbol
[src]
impl Ord for Symbol
[src]
fn cmp(&self, other: &Symbol) -> Ordering
[src]
fn max(self, other: Self) -> Self
1.21.0[src]
Compares and returns the maximum of two values. Read more
fn min(self, other: Self) -> Self
1.21.0[src]
Compares and returns the minimum of two values. Read more
fn clamp(self, min: Self, max: Self) -> Self
[src]
clamp
)Restrict a value to a certain interval. Read more
impl Eq for Symbol
[src]
impl PartialOrd<Symbol> for Symbol
[src]
fn partial_cmp(&self, other: &Symbol) -> Option<Ordering>
[src]
fn lt(&self, other: &Symbol) -> bool
[src]
fn le(&self, other: &Symbol) -> bool
[src]
fn gt(&self, other: &Symbol) -> bool
[src]
fn ge(&self, other: &Symbol) -> bool
[src]
impl Clone for Symbol
[src]
fn clone(&self) -> Symbol
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Decodable for Symbol
[src]
impl Display for Symbol
[src]
impl Copy for Symbol
[src]
impl PartialEq<Symbol> for Symbol
[src]
impl PartialEq<Symbol> for Path
[src]
Auto Trait Implementations
impl Unpin for Symbol
impl Send for Symbol
impl Sync for Symbol
impl UnwindSafe for Symbol
impl RefUnwindSafe for Symbol
Blanket Implementations
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Erased for T
[src]
impl<T> Encodable for T where
T: UseSpecializedEncodable + ?Sized,
[src]
T: UseSpecializedEncodable + ?Sized,
impl<T> Decodable for T where
T: UseSpecializedDecodable,
[src]
T: UseSpecializedDecodable,
impl<E> SpecializationError for E
[src]
default fn not_found<S, T>(
trait_name: &'static str,
method_name: &'static str
) -> E where
T: ?Sized,
[src]
trait_name: &'static str,
method_name: &'static str
) -> E where
T: ?Sized,
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
fn equivalent(&self, key: &K) -> bool
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,