pub struct UniqueNames(/* private fields */);Expand description
Deduplicates names across case conventions.
Implementations§
Source§impl UniqueNames
impl UniqueNames
Sourcepub fn scope(&self) -> UniqueNamesScope<'_>
pub fn scope(&self) -> UniqueNamesScope<'_>
Creates a new, empty scope that’s backed by this arena.
A scope produces names that will never collide with other names within the same scope, even when converted to a different case.
This is useful for disambiguating type and property names that are
distinct in the source spec, but collide when transformed
to a different case. For example, HTTP_Response and HTTPResponse
are distinct, but both become http_response in snake case.
Sourcepub fn scope_with_reserved<S: AsRef<str>>(
&self,
reserved: impl IntoIterator<Item = S>,
) -> UniqueNamesScope<'_>
pub fn scope_with_reserved<S: AsRef<str>>( &self, reserved: impl IntoIterator<Item = S>, ) -> UniqueNamesScope<'_>
Creates a new scope that’s backed by this arena, and that reserves the given names.
This is useful for reserving variable names in generated code, or reserving placeholder names that would be invalid identifiers on their own.
§Examples
let unique = UniqueNames::new();
let mut scope = unique.scope_with_reserved(["_"]);
assert_eq!(scope.uniquify("_"), "_2");
assert_eq!(scope.uniquify("_"), "_3");Trait Implementations§
Source§impl Debug for UniqueNames
impl Debug for UniqueNames
Source§impl Default for UniqueNames
impl Default for UniqueNames
Source§fn default() -> UniqueNames
fn default() -> UniqueNames
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl !Freeze for UniqueNames
impl !RefUnwindSafe for UniqueNames
impl Send for UniqueNames
impl !Sync for UniqueNames
impl Unpin for UniqueNames
impl !UnwindSafe for UniqueNames
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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