Skip to main content

Identifier

Struct Identifier 

Source
pub struct Identifier(pub UniCase<String>);

Tuple Fields§

§0: UniCase<String>

Implementations§

Source§

impl Identifier

Source

pub const MAX_LEN: usize = 64

Maximum length of an identifier, in bytes. The limit applies in the encoding used by the dictionary, not in UTF-8.

Source

pub fn new(s: impl Into<UniCase<String>>) -> Result<Self, Error>

Source

pub fn codepage_to_unicode(&mut self)

Converts this identifier to UTF-8. This is generally a no-op, because our internal encoding is UTF-8, but some identifiers are longer in UTF-8 than in their code page, which means that to satisfy the 64-byte limit this function sometimes has to remove trailing grapheme clusters.

Source

pub fn from_encoding( s: impl Into<UniCase<String>>, encoding: &'static Encoding, ) -> Result<Identifier, Error>

Source

pub fn check_encoding(&self, encoding: &'static Encoding) -> Result<(), Error>

Checks whether this is a valid identifier in the given encoding. An identifier that is valid in one encoding might be invalid in another because some characters are unencodable or because it is too long.

Source

pub fn check_plausible(s: &str) -> Result<(), Error>

Source

pub fn matches_keyword(&self, keyword: &str) -> bool

Returns true if token is a case-insensitive match for keyword.

Keywords match keyword and token are identical, or token is at least 3 characters long and those characters are identical to keyword or differ only in case.

keyword must be ASCII.

Source

pub fn matches_keyword_n(&self, keyword: &str, n: usize) -> bool

Returns true if token is a case-insensitive match for at least the first n characters of keyword.

keyword must be ASCII.

Source

pub fn must_be_ordinary(self) -> Result<Self, Error>

Source

pub fn class(&self) -> Class

Source

pub fn as_str(&self) -> &str

Source

pub fn shortened(&self, encoding: &'static Encoding) -> Self

Returns this this identifier truncated to at most 8 bytes in encoding.

Source

pub fn with_suffix( &self, suffix: &str, encoding: &'static Encoding, max_len: usize, ) -> Result<Self, Error>

Returns a prefix of this identifier concatenated with all of suffix, including as many grapheme clusters from the beginning of this identifier as would fit within max_len bytes if the resulting string were to be re-encoded in encoding.

max_len would ordinarily be 64, since that’s the maximum length of an identifier, but a value of 8 is appropriate for short variable names.

This function fails if adding or using suffix produces an invalid Identifier, for example if max_len is short enough that none of the identifier can be included and suffix begins with '_' or another character that may not appear at the beginning of an identifier.

§Examples

Simple examples for UTF-8 encoding with max_len of 6:

identifier="abc",  suffix="xyz"     => "abcxyz"
identifier="abcd", suffix="xyz"     => "abcxyz"
identifier="abc",  suffix="uvwxyz"  => "uvwxyz"
identifier="abc",  suffix="tuvwxyz" => "tuvwxyz"

Examples for windows-1252 encoding with max_len of 6:

identifier="éèä",  suffix="xyz"    => "éèäxyz"

(each letter in the identifier is only 1 byte in windows-1252 even though they each take 2 bytes in UTF-8)

Methods from Deref<Target = UniCase<String>>§

Source

pub fn to_folded_case(&self) -> String

Returns a copy of this string where each character is mapped to its Unicode CaseFolding equivalent.

§Note

Unicode Case Folding is meant for string storage and matching, not for display.

Source

pub fn is_ascii(&self) -> bool

Return true if this instance will only perform ASCII case folding.

Trait Implementations§

Source§

impl Clone for Identifier

Source§

fn clone(&self) -> Identifier

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Identifier

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult

Formats the value using the given formatter. Read more
Source§

impl Deref for Identifier

Source§

type Target = UniCase<String>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Display for Identifier

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> FmtResult

Formats the value using the given formatter. Read more
Source§

impl Eq for Identifier

Source§

impl From<&Identifier> for Class

Source§

fn from(id: &Identifier) -> Self

Converts to this type from the input type.
Source§

impl Hash for Identifier

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Identifier

Source§

fn cmp(&self, other: &Identifier) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

fn clamp_to<R>(self, range: R) -> Self
where Self: Sized, R: ClampBounds<Self>,

🔬This is a nightly-only experimental API. (clamp_to)
Restrict a value to a certain range. Read more
Source§

impl PartialEq for Identifier

Source§

fn eq(&self, other: &Identifier) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialEq<str> for Identifier

Source§

fn eq(&self, other: &str) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialOrd for Identifier

Source§

fn partial_cmp(&self, other: &Identifier) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Serialize for Identifier

Source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Identifier

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<T> CustomError for T
where T: Display + Debug + Send + Sync + 'static,

Source§

fn as_any(&self) -> &(dyn Any + Sync + Send + 'static)

Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + Sync + Send + 'static)

Source§

fn as_box_any(self: Box<T>) -> Box<dyn Any + Sync + Send>

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToSmallString for T
where T: Display,

Source§

fn to_small_string<const N: usize>(&self) -> SmallString<[u8; N]>

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.