Skip to main content

Mark

Trait Mark 

Source
trait Mark {
    type Unmarked;

    // Required methods
    fn mark(unmarked: Self::Unmarked) -> Self;
    fn unmark(self) -> Self::Unmarked;
}
🔬This is a nightly-only experimental API. (proc_macro_internals)
Expand description

Helper to wrap associated types to allow trait impl dispatch. That is, normally a pair of impls for T::Foo and T::Bar can overlap, but if the impls are, instead, on types like Marked<T::Foo, Foo> and Marked<T::Bar, Bar>, they can’t.

Required Associated Types§

Source

type Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)

Required Methods§

Source

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Mark for &str

Source§

type Unmarked = &str

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl Mark for ()

Source§

type Unmarked = ()

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl Mark for Bound<usize>

Source§

type Unmarked = Bound<usize>

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl Mark for Range<usize>

Source§

type Unmarked = Range<usize>

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl Mark for String

Source§

type Unmarked = String

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl Mark for bool

Source§

type Unmarked = bool

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl Mark for u8

Source§

type Unmarked = u8

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl Mark for usize

Source§

type Unmarked = usize

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl<T: Mark, E: Mark> Mark for Result<T, E>

Source§

type Unmarked = Result<<T as Mark>::Unmarked, <E as Mark>::Unmarked>

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl<T: Mark> Mark for Option<T>

Source§

type Unmarked = Option<<T as Mark>::Unmarked>

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

impl<T: Mark> Mark for Vec<T>

Source§

type Unmarked = Vec<<T as Mark>::Unmarked>

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn mark(unmarked: Self::Unmarked) -> Self

🔬This is a nightly-only experimental API. (proc_macro_internals)
Source§

fn unmark(self) -> Self::Unmarked

🔬This is a nightly-only experimental API. (proc_macro_internals)

Implementors§

Source§

impl Mark for Delimiter

Source§

impl Mark for Level

Source§

impl Mark for LitKind

Source§

impl<'a, T> Mark for &'a Marked<T, TokenStream>

Source§

impl<Span: Mark, Symbol: Mark> Mark for Ident<Span, Symbol>

Source§

type Unmarked = Ident<<Span as Mark>::Unmarked, <Symbol as Mark>::Unmarked>

Source§

impl<Span: Mark, Symbol: Mark> Mark for Literal<Span, Symbol>

Source§

type Unmarked = Literal<<Span as Mark>::Unmarked, <Symbol as Mark>::Unmarked>

Source§

impl<Span: Mark> Mark for DelimSpan<Span>

Source§

impl<Span: Mark> Mark for Diagnostic<Span>

Source§

impl<Span: Mark> Mark for ExpnGlobals<Span>

Source§

impl<Span: Mark> Mark for Punct<Span>

Source§

type Unmarked = Punct<<Span as Mark>::Unmarked>

Source§

impl<T, M> Mark for Marked<T, M>

Source§

impl<TokenStream: Mark, Span: Mark, Symbol: Mark> Mark for TokenTree<TokenStream, Span, Symbol>

Source§

type Unmarked = TokenTree<<TokenStream as Mark>::Unmarked, <Span as Mark>::Unmarked, <Symbol as Mark>::Unmarked>

Source§

impl<TokenStream: Mark, Span: Mark> Mark for Group<TokenStream, Span>

Source§

type Unmarked = Group<<TokenStream as Mark>::Unmarked, <Span as Mark>::Unmarked>