diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2015-01-16 17:01:02 +0200 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2015-01-17 16:37:34 -0800 |
| commit | 89b80faa8ef2b52f5adc423cfcfed69b313ea1b7 (patch) | |
| tree | 6398229035eb8fac2a35fe6eb3a72d3efad3dd12 /src/libcore | |
| parent | f4f10dba2975b51c2d2c92157018db3ac13d4d4a (diff) | |
| download | rust-89b80faa8ef2b52f5adc423cfcfed69b313ea1b7.tar.gz rust-89b80faa8ef2b52f5adc423cfcfed69b313ea1b7.zip | |
Register new snapshots.
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/fmt/mod.rs | 23 | ||||
| -rw-r--r-- | src/libcore/fmt/rt.rs | 9 | ||||
| -rw-r--r-- | src/libcore/hash/mod.rs | 410 | ||||
| -rw-r--r-- | src/libcore/intrinsics.rs | 11 | ||||
| -rw-r--r-- | src/libcore/iter.rs | 4 | ||||
| -rw-r--r-- | src/libcore/lib.rs | 1 | ||||
| -rw-r--r-- | src/libcore/num/int.rs | 7 | ||||
| -rw-r--r-- | src/libcore/num/isize.rs | 6 | ||||
| -rw-r--r-- | src/libcore/num/mod.rs | 8 | ||||
| -rw-r--r-- | src/libcore/ops.rs | 18 |
10 files changed, 128 insertions, 369 deletions
diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs index 20ac3e28c97..535722f93bf 100644 --- a/src/libcore/fmt/mod.rs +++ b/src/libcore/fmt/mod.rs @@ -180,25 +180,6 @@ impl<'a> Arguments<'a> { /// unsafety, but will ignore invalid . #[doc(hidden)] #[inline] #[unstable = "implementation detail of the `format_args!` macro"] - #[cfg(stage0)] // SNAP 9e4e524 - pub fn with_placeholders(pieces: &'a [&'a str], - fmt: &'a [rt::Argument<'a>], - args: &'a [Argument<'a>]) -> Arguments<'a> { - Arguments { - pieces: pieces, - fmt: Some(fmt), - args: args - } - } - /// This function is used to specify nonstandard formatting parameters. - /// The `pieces` array must be at least as long as `fmt` to construct - /// a valid Arguments structure. Also, any `Count` within `fmt` that is - /// `CountIsParam` or `CountIsNextParam` has to point to an argument - /// created with `argumentuint`. However, failing to do so doesn't cause - /// unsafety, but will ignore invalid . - #[doc(hidden)] #[inline] - #[unstable = "implementation detail of the `format_args!` macro"] - #[cfg(not(stage0))] pub fn with_placeholders(pieces: &'a [&'a str], fmt: &'a [rt::Argument], args: &'a [Argument<'a>]) -> Arguments<'a> { @@ -226,10 +207,6 @@ pub struct Arguments<'a> { pieces: &'a [&'a str], // Placeholder specs, or `None` if all specs are default (as in "{}{}"). - // SNAP 9e4e524 - #[cfg(stage0)] - fmt: Option<&'a [rt::Argument<'a>]>, - #[cfg(not(stage0))] fmt: Option<&'a [rt::Argument]>, // Dynamic arguments for interpolation, to be interleaved with string diff --git a/src/libcore/fmt/rt.rs b/src/libcore/fmt/rt.rs index 2abf921eaf2..bea32219155 100644 --- a/src/libcore/fmt/rt.rs +++ b/src/libcore/fmt/rt.rs @@ -21,21 +21,12 @@ pub use self::Count::*; pub use self::Position::*; pub use self::Flag::*; -// SNAP 9e4e524 #[doc(hidden)] #[derive(Copy)] -#[cfg(not(stage0))] pub struct Argument { pub position: Position, pub format: FormatSpec, } -#[doc(hidden)] -#[derive(Copy)] -#[cfg(stage0)] -pub struct Argument<'a> { - pub position: Position, - pub format: FormatSpec, -} #[doc(hidden)] #[derive(Copy)] diff --git a/src/libcore/hash/mod.rs b/src/libcore/hash/mod.rs index a82ea009e13..37e4a105a30 100644 --- a/src/libcore/hash/mod.rs +++ b/src/libcore/hash/mod.rs @@ -58,7 +58,13 @@ #![unstable = "module was recently redesigned"] +use prelude::*; + +use borrow::{Cow, ToOwned}; use default::Default; +use intrinsics::TypeId; +use mem; +use num::Int; pub use self::sip::SipHasher; @@ -70,19 +76,6 @@ mod sip; /// to compute the hash. Specific implementations of this trait may specialize /// for particular instances of `H` in order to be able to optimize the hashing /// behavior. -#[cfg(stage0)] -pub trait Hash<H> { - /// Feeds this value into the state given, updating the hasher as necessary. - fn hash(&self, state: &mut H); -} - -/// A hashable type. -/// -/// The `H` type parameter is an abstract hash state that is used by the `Hash` -/// to compute the hash. Specific implementations of this trait may specialize -/// for particular instances of `H` in order to be able to optimize the hashing -/// behavior. -#[cfg(not(stage0))] pub trait Hash<H: Hasher> { /// Feeds this value into the state given, updating the hasher as necessary. fn hash(&self, state: &mut H); @@ -121,314 +114,147 @@ pub fn hash<T: Hash<H>, H: Hasher + Default>(value: &T) -> H::Output { ////////////////////////////////////////////////////////////////////////////// -#[cfg(stage0)] -mod impls { - use prelude::*; - - use borrow::{Cow, ToOwned}; - use intrinsics::TypeId; - use mem; - use super::{Hash, Writer}; - use num::Int; - - macro_rules! impl_hash { - ($ty:ident, $uty:ident) => { - impl<S: Writer> Hash<S> for $ty { - #[inline] - fn hash(&self, state: &mut S) { - let a: [u8; ::$ty::BYTES] = unsafe { - mem::transmute((*self as $uty).to_le() as $ty) - }; - state.write(a.as_slice()) - } - } - } - } - - impl_hash! { u8, u8 } - impl_hash! { u16, u16 } - impl_hash! { u32, u32 } - impl_hash! { u64, u64 } - impl_hash! { uint, uint } - impl_hash! { i8, u8 } - impl_hash! { i16, u16 } - impl_hash! { i32, u32 } - impl_hash! { i64, u64 } - impl_hash! { int, uint } - - impl<S: Writer> Hash<S> for bool { - #[inline] - fn hash(&self, state: &mut S) { - (*self as u8).hash(state); - } - } - - impl<S: Writer> Hash<S> for char { - #[inline] - fn hash(&self, state: &mut S) { - (*self as u32).hash(state); - } - } - - impl<S: Writer> Hash<S> for str { - #[inline] - fn hash(&self, state: &mut S) { - state.write(self.as_bytes()); - 0xffu8.hash(state) - } - } - - macro_rules! impl_hash_tuple { - () => ( - impl<S> Hash<S> for () { - #[inline] - fn hash(&self, _state: &mut S) {} - } - ); - - ( $($name:ident)+) => ( - impl<S, $($name: Hash<S>),*> Hash<S> for ($($name,)*) { - #[inline] - #[allow(non_snake_case)] - fn hash(&self, state: &mut S) { - match *self { - ($(ref $name,)*) => { - $( - $name.hash(state); - )* - } - } - } - } - ); - } - - impl_hash_tuple! {} - impl_hash_tuple! { A } - impl_hash_tuple! { A B } - impl_hash_tuple! { A B C } - impl_hash_tuple! { A B C D } - impl_hash_tuple! { A B C D E } - impl_hash_tuple! { A B C D E F } - impl_hash_tuple! { A B C D E F G } - impl_hash_tuple! { A B C D E F G H } - impl_hash_tuple! { A B C D E F G H I } - impl_hash_tuple! { A B C D E F G H I J } - impl_hash_tuple! { A B C D E F G H I J K } - impl_hash_tuple! { A B C D E F G H I J K L } - - impl<S: Writer, T: Hash<S>> Hash<S> for [T] { - #[inline] - fn hash(&self, state: &mut S) { - self.len().hash(state); - for elt in self.iter() { - elt.hash(state); +macro_rules! impl_hash { + ($ty:ident, $uty:ident) => { + impl<S: Writer + Hasher> Hash<S> for $ty { + #[inline] + fn hash(&self, state: &mut S) { + let a: [u8; ::$ty::BYTES] = unsafe { + mem::transmute((*self as $uty).to_le() as $ty) + }; + state.write(a.as_slice()) } } } - - - impl<'a, S, T: ?Sized + Hash<S>> Hash<S> for &'a T { - #[inline] - fn hash(&self, state: &mut S) { - (**self).hash(state); - } - } - - impl<'a, S, T: ?Sized + Hash<S>> Hash<S> for &'a mut T { - #[inline] - fn hash(&self, state: &mut S) { - (**self).hash(state); - } - } - - impl<S: Writer, T> Hash<S> for *const T { - #[inline] - fn hash(&self, state: &mut S) { - // NB: raw-pointer Hash does _not_ dereference - // to the target; it just gives you the pointer-bytes. - (*self as uint).hash(state); - } - } - - impl<S: Writer, T> Hash<S> for *mut T { - #[inline] - fn hash(&self, state: &mut S) { - // NB: raw-pointer Hash does _not_ dereference - // to the target; it just gives you the pointer-bytes. - (*self as uint).hash(state); - } - } - - impl<S: Writer> Hash<S> for TypeId { - #[inline] - fn hash(&self, state: &mut S) { - self.hash().hash(state) - } - } - - impl<'a, T, B: ?Sized, S> Hash<S> for Cow<'a, T, B> - where B: Hash<S> + ToOwned<T> - { - #[inline] - fn hash(&self, state: &mut S) { - Hash::hash(&**self, state) - } - } } -#[cfg(not(stage0))] -mod impls { - use prelude::*; - - use borrow::{Cow, ToOwned}; - use intrinsics::TypeId; - use mem; - use super::{Hash, Writer, Hasher}; - use num::Int; - - macro_rules! impl_hash { - ($ty:ident, $uty:ident) => { - impl<S: Writer + Hasher> Hash<S> for $ty { - #[inline] - fn hash(&self, state: &mut S) { - let a: [u8; ::$ty::BYTES] = unsafe { - mem::transmute((*self as $uty).to_le() as $ty) - }; - state.write(a.as_slice()) - } - } - } +impl_hash! { u8, u8 } +impl_hash! { u16, u16 } +impl_hash! { u32, u32 } +impl_hash! { u64, u64 } +impl_hash! { uint, uint } +impl_hash! { i8, u8 } +impl_hash! { i16, u16 } +impl_hash! { i32, u32 } +impl_hash! { i64, u64 } +impl_hash! { int, uint } + +impl<S: Writer + Hasher> Hash<S> for bool { + #[inline] + fn hash(&self, state: &mut S) { + (*self as u8).hash(state); } +} - impl_hash! { u8, u8 } - impl_hash! { u16, u16 } - impl_hash! { u32, u32 } - impl_hash! { u64, u64 } - impl_hash! { uint, uint } - impl_hash! { i8, u8 } - impl_hash! { i16, u16 } - impl_hash! { i32, u32 } - impl_hash! { i64, u64 } - impl_hash! { int, uint } - - impl<S: Writer + Hasher> Hash<S> for bool { - #[inline] - fn hash(&self, state: &mut S) { - (*self as u8).hash(state); - } +impl<S: Writer + Hasher> Hash<S> for char { + #[inline] + fn hash(&self, state: &mut S) { + (*self as u32).hash(state); } +} - impl<S: Writer + Hasher> Hash<S> for char { - #[inline] - fn hash(&self, state: &mut S) { - (*self as u32).hash(state); - } +impl<S: Writer + Hasher> Hash<S> for str { + #[inline] + fn hash(&self, state: &mut S) { + state.write(self.as_bytes()); + 0xffu8.hash(state) } +} - impl<S: Writer + Hasher> Hash<S> for str { - #[inline] - fn hash(&self, state: &mut S) { - state.write(self.as_bytes()); - 0xffu8.hash(state) +macro_rules! impl_hash_tuple { + () => ( + impl<S: Hasher> Hash<S> for () { + #[inline] + fn hash(&self, _state: &mut S) {} } - } - - macro_rules! impl_hash_tuple { - () => ( - impl<S: Hasher> Hash<S> for () { - #[inline] - fn hash(&self, _state: &mut S) {} - } - ); - - ( $($name:ident)+) => ( - impl<S: Hasher, $($name: Hash<S>),*> Hash<S> for ($($name,)*) { - #[inline] - #[allow(non_snake_case)] - fn hash(&self, state: &mut S) { - match *self { - ($(ref $name,)*) => { - $( - $name.hash(state); - )* - } + ); + + ( $($name:ident)+) => ( + impl<S: Hasher, $($name: Hash<S>),*> Hash<S> for ($($name,)*) { + #[inline] + #[allow(non_snake_case)] + fn hash(&self, state: &mut S) { + match *self { + ($(ref $name,)*) => { + $( + $name.hash(state); + )* } } } - ); - } - - impl_hash_tuple! {} - impl_hash_tuple! { A } - impl_hash_tuple! { A B } - impl_hash_tuple! { A B C } - impl_hash_tuple! { A B C D } - impl_hash_tuple! { A B C D E } - impl_hash_tuple! { A B C D E F } - impl_hash_tuple! { A B C D E F G } - impl_hash_tuple! { A B C D E F G H } - impl_hash_tuple! { A B C D E F G H I } - impl_hash_tuple! { A B C D E F G H I J } - impl_hash_tuple! { A B C D E F G H I J K } - impl_hash_tuple! { A B C D E F G H I J K L } + } + ); +} - impl<S: Writer + Hasher, T: Hash<S>> Hash<S> for [T] { - #[inline] - fn hash(&self, state: &mut S) { - self.len().hash(state); - for elt in self.iter() { - elt.hash(state); - } +impl_hash_tuple! {} +impl_hash_tuple! { A } +impl_hash_tuple! { A B } +impl_hash_tuple! { A B C } +impl_hash_tuple! { A B C D } +impl_hash_tuple! { A B C D E } +impl_hash_tuple! { A B C D E F } +impl_hash_tuple! { A B C D E F G } +impl_hash_tuple! { A B C D E F G H } +impl_hash_tuple! { A B C D E F G H I } +impl_hash_tuple! { A B C D E F G H I J } +impl_hash_tuple! { A B C D E F G H I J K } +impl_hash_tuple! { A B C D E F G H I J K L } + +impl<S: Writer + Hasher, T: Hash<S>> Hash<S> for [T] { + #[inline] + fn hash(&self, state: &mut S) { + self.len().hash(state); + for elt in self.iter() { + elt.hash(state); } } +} - impl<'a, S: Hasher, T: ?Sized + Hash<S>> Hash<S> for &'a T { - #[inline] - fn hash(&self, state: &mut S) { - (**self).hash(state); - } +impl<'a, S: Hasher, T: ?Sized + Hash<S>> Hash<S> for &'a T { + #[inline] + fn hash(&self, state: &mut S) { + (**self).hash(state); } +} - impl<'a, S: Hasher, T: ?Sized + Hash<S>> Hash<S> for &'a mut T { - #[inline] - fn hash(&self, state: &mut S) { - (**self).hash(state); - } +impl<'a, S: Hasher, T: ?Sized + Hash<S>> Hash<S> for &'a mut T { + #[inline] + fn hash(&self, state: &mut S) { + (**self).hash(state); } +} - impl<S: Writer + Hasher, T> Hash<S> for *const T { - #[inline] - fn hash(&self, state: &mut S) { - // NB: raw-pointer Hash does _not_ dereference - // to the target; it just gives you the pointer-bytes. - (*self as uint).hash(state); - } +impl<S: Writer + Hasher, T> Hash<S> for *const T { + #[inline] + fn hash(&self, state: &mut S) { + // NB: raw-pointer Hash does _not_ dereference + // to the target; it just gives you the pointer-bytes. + (*self as uint).hash(state); } +} - impl<S: Writer + Hasher, T> Hash<S> for *mut T { - #[inline] - fn hash(&self, state: &mut S) { - // NB: raw-pointer Hash does _not_ dereference - // to the target; it just gives you the pointer-bytes. - (*self as uint).hash(state); - } +impl<S: Writer + Hasher, T> Hash<S> for *mut T { + #[inline] + fn hash(&self, state: &mut S) { + // NB: raw-pointer Hash does _not_ dereference + // to the target; it just gives you the pointer-bytes. + (*self as uint).hash(state); } +} - impl<S: Writer + Hasher> Hash<S> for TypeId { - #[inline] - fn hash(&self, state: &mut S) { - self.hash().hash(state) - } +impl<S: Writer + Hasher> Hash<S> for TypeId { + #[inline] + fn hash(&self, state: &mut S) { + self.hash().hash(state) } +} - impl<'a, T, B: ?Sized, S: Hasher> Hash<S> for Cow<'a, T, B> - where B: Hash<S> + ToOwned<T> - { - #[inline] - fn hash(&self, state: &mut S) { - Hash::hash(&**self, state) - } +impl<'a, T, B: ?Sized, S: Hasher> Hash<S> for Cow<'a, T, B> + where B: Hash<S> + ToOwned<T> +{ + #[inline] + fn hash(&self, state: &mut S) { + Hash::hash(&**self, state) } } diff --git a/src/libcore/intrinsics.rs b/src/libcore/intrinsics.rs index 978e8a19737..40db0def626 100644 --- a/src/libcore/intrinsics.rs +++ b/src/libcore/intrinsics.rs @@ -42,7 +42,6 @@ #![unstable] #![allow(missing_docs)] -#[cfg(not(stage0))] use marker::Sized; pub type GlueFn = extern "Rust" fn(*const i8); @@ -207,12 +206,8 @@ extern "rust-intrinsic" { /// Gets an identifier which is globally unique to the specified type. This /// function will return the same value for a type regardless of whichever /// crate it is invoked in. - #[cfg(not(stage0))] pub fn type_id<T: ?Sized + 'static>() -> TypeId; - #[cfg(stage0)] - pub fn type_id<T: 'static>() -> TypeId; - /// Create a value initialized to zero. /// /// `init` is unsafe because it returns a zeroed-out datum, @@ -562,15 +557,9 @@ pub struct TypeId { impl TypeId { /// Returns the `TypeId` of the type this generic function has been instantiated with - #[cfg(not(stage0))] pub fn of<T: ?Sized + 'static>() -> TypeId { unsafe { type_id::<T>() } } - #[cfg(stage0)] - pub fn of<T: 'static>() -> TypeId { - unsafe { type_id::<T>() } - } - pub fn hash(&self) -> u64 { self.t } } diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index 5ed77852ad0..0005db36c27 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -2753,9 +2753,9 @@ macro_rules! step_impl_no_between { } step_impl!(uint u8 u16 u32 int i8 i16 i32); -#[cfg(any(all(stage0, target_word_size = "64"), all(not(stage0), target_pointer_width = "64")))] +#[cfg(target_pointer_width = "64")] step_impl!(u64 i64); -#[cfg(any(all(stage0, target_word_size = "32"), all(not(stage0), target_pointer_width = "32")))] +#[cfg(target_pointer_width = "32")] step_impl_no_between!(u64 i64); diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs index 78e8a2a9e91..0b150d1ecf9 100644 --- a/src/libcore/lib.rs +++ b/src/libcore/lib.rs @@ -58,7 +58,6 @@ #![no_std] #![allow(unknown_features, raw_pointer_derive)] -#![cfg_attr(stage0, allow(unused_attributes))] #![allow(unknown_features)] #![feature(intrinsics, lang_items)] #![feature(simd, unsafe_destructor, slicing_syntax)] #![feature(unboxed_closures)] diff --git a/src/libcore/num/int.rs b/src/libcore/num/int.rs index 065763a0d8e..83011db35ce 100644 --- a/src/libcore/num/int.rs +++ b/src/libcore/num/int.rs @@ -16,8 +16,5 @@ #![deprecated = "replaced by isize"] -#[cfg(stage0)] #[cfg(target_word_size = "32")] int_module! { int, 32 } -#[cfg(stage0)] #[cfg(target_word_size = "64")] int_module! { int, 64 } - -#[cfg(not(stage0))] #[cfg(target_pointer_width = "32")] int_module! { int, 32 } -#[cfg(not(stage0))] #[cfg(target_pointer_width = "64")] int_module! { int, 64 } +#[cfg(target_pointer_width = "32")] int_module! { int, 32 } +#[cfg(target_pointer_width = "64")] int_module! { int, 64 } diff --git a/src/libcore/num/isize.rs b/src/libcore/num/isize.rs index c1cf3c62131..e4711c92c59 100644 --- a/src/libcore/num/isize.rs +++ b/src/libcore/num/isize.rs @@ -17,9 +17,7 @@ #![stable] #![doc(primitive = "isize")] -#[cfg(any(all(stage0, target_word_size = "32"), - all(not(stage0), target_pointer_width = "32")))] +#[cfg(target_pointer_width = "32")] int_module! { isize, 32 } -#[cfg(any(all(stage0, target_word_size = "64"), - all(not(stage0), target_pointer_width = "64")))] +#[cfg(target_pointer_width = "64")] int_module! { isize, 64 } diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs index 57415f4331d..599a5515e3b 100644 --- a/src/libcore/num/mod.rs +++ b/src/libcore/num/mod.rs @@ -496,7 +496,7 @@ uint_impl! { u64 = u64, 64, intrinsics::u64_sub_with_overflow, intrinsics::u64_mul_with_overflow } -#[cfg(any(all(stage0, target_word_size = "32"), all(not(stage0), target_pointer_width = "32")))] +#[cfg(target_pointer_width = "32")] uint_impl! { uint = u32, 32, intrinsics::ctpop32, intrinsics::ctlz32, @@ -506,7 +506,7 @@ uint_impl! { uint = u32, 32, intrinsics::u32_sub_with_overflow, intrinsics::u32_mul_with_overflow } -#[cfg(any(all(stage0, target_word_size = "64"), all(not(stage0), target_pointer_width = "64")))] +#[cfg(target_pointer_width = "64")] uint_impl! { uint = u64, 64, intrinsics::ctpop64, intrinsics::ctlz64, @@ -601,13 +601,13 @@ int_impl! { i64 = i64, u64, 64, intrinsics::i64_sub_with_overflow, intrinsics::i64_mul_with_overflow } -#[cfg(any(all(stage0, target_word_size = "32"), all(not(stage0), target_pointer_width = "32")))] +#[cfg(target_pointer_width = "32")] int_impl! { int = i32, u32, 32, intrinsics::i32_add_with_overflow, intrinsics::i32_sub_with_overflow, intrinsics::i32_mul_with_overflow } -#[cfg(any(all(stage0, target_word_size = "64"), all(not(stage0), target_pointer_width = "64")))] +#[cfg(target_pointer_width = "64")] int_impl! { int = i64, u64, 64, intrinsics::i64_add_with_overflow, intrinsics::i64_sub_with_overflow, diff --git a/src/libcore/ops.rs b/src/libcore/ops.rs index 7d41c3fc5a5..db7177e26fa 100644 --- a/src/libcore/ops.rs +++ b/src/libcore/ops.rs @@ -719,8 +719,6 @@ macro_rules! shl_impl { ) } -// SNAP 9e4e524e0 -#[cfg(not(stage0))] macro_rules! shl_impl_all { ($($t:ty)*) => ($( shl_impl! { $t, u8 } @@ -737,13 +735,6 @@ macro_rules! shl_impl_all { )*) } -#[cfg(stage0)] -macro_rules! shl_impl_all { - ($($t:ty)*) => ($( - shl_impl! { $t, usize } - )*) -} - shl_impl_all! { u8 u16 u32 u64 usize i8 i16 i32 i64 isize } /// The `Shr` trait is used to specify the functionality of `>>`. @@ -798,8 +789,6 @@ macro_rules! shr_impl { ) } -// SNAP 9e4e524e0 -#[cfg(not(stage0))] macro_rules! shr_impl_all { ($($t:ty)*) => ($( shr_impl! { $t, u8 } @@ -816,13 +805,6 @@ macro_rules! shr_impl_all { )*) } -#[cfg(stage0)] -macro_rules! shr_impl_all { - ($($t:ty)*) => ($( - shr_impl! { $t, usize } - )*) -} - shr_impl_all! { u8 u16 u32 u64 usize i8 i16 i32 i64 isize } /// The `Index` trait is used to specify the functionality of indexing operations |
