Macro rustc_ap_rustc_index::newtype_index [−][src]
macro_rules! newtype_index { ($(#[$attrs : meta]) * $v : vis struct $name : ident { .. }) => { ... }; ($(#[$attrs : meta]) * $v : vis struct $name : ident { $($tokens : tt) + }) => { ... }; (@ derives [$($derives : ident,) *] @ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt]) => { ... }; (@ handle_debug @ derives [$($_derives : ident,) *] @ type [$type : ident] @ debug_format [custom]) => { ... }; (@ handle_debug @ derives [] @ type [$type : ident] @ debug_format [$debug_format : tt]) => { ... }; (@ handle_debug @ derives [Debug, $($derives : ident,) *] @ type [$type : ident] @ debug_format [$debug_format : tt]) => { ... }; (@ handle_debug @ derives [$_derive : ident, $($derives : ident,) *] @ type [$type : ident] @ debug_format [$debug_format : tt]) => { ... }; (@ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] derive [$($derives : ident), *] $($tokens : tt) *) => { ... }; (@ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] derive [$($derives : ident,) +] ENCODABLE = custom $($tokens : tt) *) => { ... }; (@ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] derive [$($derives : ident,) +] $($tokens : tt) *) => { ... }; (@ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] ENCODABLE = custom $($tokens : tt) *) => { ... }; (@ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] $($tokens : tt) *) => { ... }; (@ serializable $type : ident) => { ... }; (@ derives [$($derives : ident,) *] @ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] $name : ident = $constant : expr) => { ... }; (@ derives [$($derives : ident,) *] @ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] $(#[doc = $doc : expr]) * const $name : ident = $constant : expr) => { ... }; (@ derives [$($derives : ident,) *] @ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$_max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] MAX = $max : expr, $($tokens : tt) *) => { ... }; (@ derives [$($derives : ident,) *] @ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$_debug_format : tt] DEBUG_FORMAT = $debug_format : tt, $($tokens : tt) *) => { ... }; (@ derives [$($derives : ident,) *] @ attrs [$(#[$attrs : meta]) *] @ type [$type : ident] @ max [$max : expr] @ vis [$v : vis] @ debug_format [$debug_format : tt] $(#[doc = $doc : expr]) * const $name : ident = $constant : expr, $($tokens : tt) *) => { ... }; }
Expand description
Creates a struct type S
that can be used as an index with
IndexVec
and so on.
There are two ways of interacting with these indices:
-
The
From
impls are the preferred way. So you can doS::from(v)
with ausize
oru32
. And you can convert back to an integer withu32::from(s)
. -
Alternatively, you can use the methods
S::new(v)
ands.index()
to create/return a value.
Internally, the index uses a u32, so the index must not exceed
u32::MAX
. You can also customize things like the Debug
impl,
what traits are derived, and so forth via the macro.