Trait quote::IdentFragment
source · pub trait IdentFragment {
fn fmt(&self, f: &mut Formatter<'_>) -> Result;
fn span(&self) -> Option<Span> { ... }
}
Expand description
Specialized formatting trait used by format_ident!
.
Ident
arguments formatted using this trait will have their r#
prefix
stripped, if present.
See format_ident!
for more information.
Required Methods§
Provided Methods§
sourcefn span(&self) -> Option<Span>
fn span(&self) -> Option<Span>
Span associated with this IdentFragment
.
If non-None
, may be inherited by formatted identifiers.
Examples found in repository?
More examples
src/ident_fragment.rs (line 25)
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
fn span(&self) -> Option<Span> {
<T as IdentFragment>::span(*self)
}
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
IdentFragment::fmt(*self, f)
}
}
impl<T: IdentFragment + ?Sized> IdentFragment for &mut T {
fn span(&self) -> Option<Span> {
<T as IdentFragment>::span(*self)
}
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
IdentFragment::fmt(*self, f)
}
}
impl IdentFragment for Ident {
fn span(&self) -> Option<Span> {
Some(self.span())
}
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let id = self.to_string();
if id.starts_with("r#") {
fmt::Display::fmt(&id[2..], f)
} else {
fmt::Display::fmt(&id[..], f)
}
}
}
impl<T> IdentFragment for Cow<'_, T>
where
T: IdentFragment + ToOwned + ?Sized,
{
fn span(&self) -> Option<Span> {
T::span(self)
}