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§

Format this value as an identifier fragment.

Provided Methods§

Span associated with this IdentFragment.

If non-None, may be inherited by formatted identifiers.

Examples found in repository?
src/runtime.rs (line 406)
405
406
407
    pub fn span(&self) -> Option<Span> {
        self.0.span()
    }
More examples
Hide additional 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)
    }

Implementations on Foreign Types§

Implementors§