Trait Mark

Source
trait Mark {
    type Unmarked;

    // Required method
    fn mark(unmarked: Self::Unmarked) -> Self;
}
🔬This is a nightly-only experimental API. (proc_macro_internals #27812)
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 #27812)

Required Methods§

Source

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

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Mark for &str

Source§

type Unmarked = &str

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

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

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

impl Mark for &[u8]

Source§

type Unmarked = &[u8]

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

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

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

impl Mark for bool

Source§

type Unmarked = bool

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

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

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

impl Mark for char

Source§

type Unmarked = char

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

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

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

impl Mark for u8

Source§

type Unmarked = u8

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

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

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

impl Mark for ()

Source§

type Unmarked = ()

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

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

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

impl Mark for usize

Source§

type Unmarked = usize

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

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

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

impl Mark for String

Source§

type Unmarked = String

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

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

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

impl<T: Mark> Mark for Bound<T>

Source§

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

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

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

🔬This is a nightly-only experimental API. (proc_macro_internals #27812)
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 #27812)
Source§

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

🔬This is a nightly-only experimental API. (proc_macro_internals #27812)
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 #27812)
Source§

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

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

impl<T: Mark> Mark for Range<T>

Source§

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

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

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

🔬This is a nightly-only experimental API. (proc_macro_internals #27812)
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 #27812)
Source§

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

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

Implementors§

Source§

impl Mark for Level

Source§

impl Mark for Delimiter

Source§

impl Mark for Spacing

Source§

impl Mark for LitKind

Source§

impl<Sp: Mark, Sy: Mark> Mark for Literal<Sp, Sy>

Source§

type Unmarked = Literal<<Sp as Mark>::Unmarked, <Sy 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<Span: Mark, Symbol: Mark> Mark for Ident<Span, Symbol>

Source§

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

Source§

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

Source§

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

Source§

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

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>