Struct bitvec::indices::BitIdx [−][src]
Indicates a semantic index of a bit within a memory element.
This type is consumed by BitOrder
implementors, which use it to produce a
concrete bit position inside an element.
BitIdx
is a semantic counter which has a defined, constant, and predictable
ordering. Values of BitIdx
refer strictly to an abstract ordering, and not to
any actual bit positions within a memory element, so BitIdx::<T>(0)
is always
the first bit counted within an element, but is not required to be the most or
least significant bits, or any other particular bits. Which specific bit is
referred by a BitIdx
value is governed by implementors of BitOrder
.
Type Parameters
T
: The memory element type controlled by this index.
Implementations
impl<T> BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
pub fn new(idx: u8) -> Option<Self>
[src]
Wraps a counter value as a known-good index of the T
element type.
Parameters
idx
: A semantic index within aT
memory element.
Returns
If idx
is within the range 0 .. T::BITS
, then this returns the index
value wrapped in the index type; if idx
exceeds this range, then this
returns None
.
Methods from Deref<Target = u8>
pub const MIN: u8
1.43.0[src]
pub const MAX: u8
1.43.0[src]
pub const BITS: u32
[src]
pub fn as_ne_bytes(&self) -> &[u8; 1]
[src]
num_as_ne_bytes
)Return the memory representation of this integer as a byte array in native byte order.
to_ne_bytes
should be preferred over this whenever possible.
Examples
#![feature(num_as_ne_bytes)] let num = 0x12u8; let bytes = num.as_ne_bytes(); assert_eq!( bytes, if cfg!(target_endian = "big") { &[0x12] } else { &[0x12] } );
pub const fn is_ascii(&self) -> bool
1.23.0 (const: 1.43.0)[src]
Checks if the value is within the ASCII range.
Examples
let ascii = 97u8; let non_ascii = 150u8; assert!(ascii.is_ascii()); assert!(!non_ascii.is_ascii());
pub const fn to_ascii_uppercase(&self) -> u8
1.23.0 (const: 1.52.0)[src]
Makes a copy of the value in its ASCII upper case equivalent.
ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’, but non-ASCII letters are unchanged.
To uppercase the value in-place, use make_ascii_uppercase
.
Examples
let lowercase_a = 97u8; assert_eq!(65, lowercase_a.to_ascii_uppercase());
pub const fn to_ascii_lowercase(&self) -> u8
1.23.0 (const: 1.52.0)[src]
Makes a copy of the value in its ASCII lower case equivalent.
ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’, but non-ASCII letters are unchanged.
To lowercase the value in-place, use make_ascii_lowercase
.
Examples
let uppercase_a = 65u8; assert_eq!(97, uppercase_a.to_ascii_lowercase());
pub const fn eq_ignore_ascii_case(&self, other: &u8) -> bool
1.23.0 (const: 1.52.0)[src]
Checks that two values are an ASCII case-insensitive match.
This is equivalent to to_ascii_lowercase(a) == to_ascii_lowercase(b)
.
Examples
let lowercase_a = 97u8; let uppercase_a = 65u8; assert!(lowercase_a.eq_ignore_ascii_case(&uppercase_a));
pub const fn is_ascii_alphabetic(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII alphabetic character:
- U+0041 ‘A’ ..= U+005A ‘Z’, or
- U+0061 ‘a’ ..= U+007A ‘z’.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(uppercase_a.is_ascii_alphabetic()); assert!(uppercase_g.is_ascii_alphabetic()); assert!(a.is_ascii_alphabetic()); assert!(g.is_ascii_alphabetic()); assert!(!zero.is_ascii_alphabetic()); assert!(!percent.is_ascii_alphabetic()); assert!(!space.is_ascii_alphabetic()); assert!(!lf.is_ascii_alphabetic()); assert!(!esc.is_ascii_alphabetic());
pub const fn is_ascii_uppercase(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII uppercase character: U+0041 ‘A’ ..= U+005A ‘Z’.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(uppercase_a.is_ascii_uppercase()); assert!(uppercase_g.is_ascii_uppercase()); assert!(!a.is_ascii_uppercase()); assert!(!g.is_ascii_uppercase()); assert!(!zero.is_ascii_uppercase()); assert!(!percent.is_ascii_uppercase()); assert!(!space.is_ascii_uppercase()); assert!(!lf.is_ascii_uppercase()); assert!(!esc.is_ascii_uppercase());
pub const fn is_ascii_lowercase(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII lowercase character: U+0061 ‘a’ ..= U+007A ‘z’.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(!uppercase_a.is_ascii_lowercase()); assert!(!uppercase_g.is_ascii_lowercase()); assert!(a.is_ascii_lowercase()); assert!(g.is_ascii_lowercase()); assert!(!zero.is_ascii_lowercase()); assert!(!percent.is_ascii_lowercase()); assert!(!space.is_ascii_lowercase()); assert!(!lf.is_ascii_lowercase()); assert!(!esc.is_ascii_lowercase());
pub const fn is_ascii_alphanumeric(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII alphanumeric character:
- U+0041 ‘A’ ..= U+005A ‘Z’, or
- U+0061 ‘a’ ..= U+007A ‘z’, or
- U+0030 ‘0’ ..= U+0039 ‘9’.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(uppercase_a.is_ascii_alphanumeric()); assert!(uppercase_g.is_ascii_alphanumeric()); assert!(a.is_ascii_alphanumeric()); assert!(g.is_ascii_alphanumeric()); assert!(zero.is_ascii_alphanumeric()); assert!(!percent.is_ascii_alphanumeric()); assert!(!space.is_ascii_alphanumeric()); assert!(!lf.is_ascii_alphanumeric()); assert!(!esc.is_ascii_alphanumeric());
pub const fn is_ascii_digit(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII decimal digit: U+0030 ‘0’ ..= U+0039 ‘9’.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(!uppercase_a.is_ascii_digit()); assert!(!uppercase_g.is_ascii_digit()); assert!(!a.is_ascii_digit()); assert!(!g.is_ascii_digit()); assert!(zero.is_ascii_digit()); assert!(!percent.is_ascii_digit()); assert!(!space.is_ascii_digit()); assert!(!lf.is_ascii_digit()); assert!(!esc.is_ascii_digit());
pub const fn is_ascii_hexdigit(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII hexadecimal digit:
- U+0030 ‘0’ ..= U+0039 ‘9’, or
- U+0041 ‘A’ ..= U+0046 ‘F’, or
- U+0061 ‘a’ ..= U+0066 ‘f’.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(uppercase_a.is_ascii_hexdigit()); assert!(!uppercase_g.is_ascii_hexdigit()); assert!(a.is_ascii_hexdigit()); assert!(!g.is_ascii_hexdigit()); assert!(zero.is_ascii_hexdigit()); assert!(!percent.is_ascii_hexdigit()); assert!(!space.is_ascii_hexdigit()); assert!(!lf.is_ascii_hexdigit()); assert!(!esc.is_ascii_hexdigit());
pub const fn is_ascii_punctuation(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII punctuation character:
- U+0021 ..= U+002F
! " # $ % & ' ( ) * + , - . /
, or - U+003A ..= U+0040
: ; < = > ? @
, or - U+005B ..= U+0060
[ \ ] ^ _ `
, or - U+007B ..= U+007E
{ | } ~
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(!uppercase_a.is_ascii_punctuation()); assert!(!uppercase_g.is_ascii_punctuation()); assert!(!a.is_ascii_punctuation()); assert!(!g.is_ascii_punctuation()); assert!(!zero.is_ascii_punctuation()); assert!(percent.is_ascii_punctuation()); assert!(!space.is_ascii_punctuation()); assert!(!lf.is_ascii_punctuation()); assert!(!esc.is_ascii_punctuation());
pub const fn is_ascii_graphic(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII graphic character: U+0021 ‘!’ ..= U+007E ‘~’.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(uppercase_a.is_ascii_graphic()); assert!(uppercase_g.is_ascii_graphic()); assert!(a.is_ascii_graphic()); assert!(g.is_ascii_graphic()); assert!(zero.is_ascii_graphic()); assert!(percent.is_ascii_graphic()); assert!(!space.is_ascii_graphic()); assert!(!lf.is_ascii_graphic()); assert!(!esc.is_ascii_graphic());
pub const fn is_ascii_whitespace(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII whitespace character: U+0020 SPACE, U+0009 HORIZONTAL TAB, U+000A LINE FEED, U+000C FORM FEED, or U+000D CARRIAGE RETURN.
Rust uses the WhatWG Infra Standard’s definition of ASCII whitespace. There are several other definitions in wide use. For instance, the POSIX locale includes U+000B VERTICAL TAB as well as all the above characters, but—from the very same specification—the default rule for “field splitting” in the Bourne shell considers only SPACE, HORIZONTAL TAB, and LINE FEED as whitespace.
If you are writing a program that will process an existing file format, check what that format’s definition of whitespace is before using this function.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(!uppercase_a.is_ascii_whitespace()); assert!(!uppercase_g.is_ascii_whitespace()); assert!(!a.is_ascii_whitespace()); assert!(!g.is_ascii_whitespace()); assert!(!zero.is_ascii_whitespace()); assert!(!percent.is_ascii_whitespace()); assert!(space.is_ascii_whitespace()); assert!(lf.is_ascii_whitespace()); assert!(!esc.is_ascii_whitespace());
pub const fn is_ascii_control(&self) -> bool
1.24.0 (const: 1.47.0)[src]
Checks if the value is an ASCII control character: U+0000 NUL ..= U+001F UNIT SEPARATOR, or U+007F DELETE. Note that most ASCII whitespace characters are control characters, but SPACE is not.
Examples
let uppercase_a = b'A'; let uppercase_g = b'G'; let a = b'a'; let g = b'g'; let zero = b'0'; let percent = b'%'; let space = b' '; let lf = b'\n'; let esc = 0x1b_u8; assert!(!uppercase_a.is_ascii_control()); assert!(!uppercase_g.is_ascii_control()); assert!(!a.is_ascii_control()); assert!(!g.is_ascii_control()); assert!(!zero.is_ascii_control()); assert!(!percent.is_ascii_control()); assert!(!space.is_ascii_control()); assert!(lf.is_ascii_control()); assert!(esc.is_ascii_control());
Trait Implementations
impl<T: Clone> Clone for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
impl<T: Copy> Copy for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
impl<T: Debug> Debug for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
impl<T: Default> Default for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
impl<T> Deref for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
impl<T: Eq> Eq for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
impl<T: Hash> Hash for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl<T: Ord> Ord for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
fn cmp(&self, other: &BitIdx<T>) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl<T: PartialEq> PartialEq<BitIdx<T>> for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
impl<T: PartialOrd> PartialOrd<BitIdx<T>> for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
fn partial_cmp(&self, other: &BitIdx<T>) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl<T> StructuralEq for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
impl<T> StructuralPartialEq for BitIdx<T> where
T: BitStore,
[src]
T: BitStore,
Auto Trait Implementations
impl<T> RefUnwindSafe for BitIdx<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T> Send for BitIdx<T>
impl<T> Sync for BitIdx<T>
impl<T> Unpin for BitIdx<T> where
T: Unpin,
T: Unpin,
impl<T> UnwindSafe for BitIdx<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,