Struct bitvec::indices::BitPos[][src]

pub struct BitPos<T> where
    T: BitStore
{ /* fields omitted */ }

Indicates a real electrical index within an element.

This type is produced by BitOrder implementors, and marks a specific electrical bit within a memory element, rather than BitIdx’s semantic bit.

Type Parameters

Implementations

impl<T> BitPos<T> where
    T: BitStore
[src]

pub fn new(pos: u8) -> Self[src]

Produce a new bit position marker at a valid position value.

BitOrder implementations should prefer this method, but may use ::new_unchecked if they can guarantee that the range invariant is upheld.

Parameters

  • pos: The bit position value to encode. It must be in the range 0 .. T::BITS.

Panics

This function panics if pos is greater than or equal to T::BITS.

pub unsafe fn new_unchecked(pos: u8) -> Self[src]

Produce a new bit position marker at any position value.

Safety

The caller must ensure that pos is less than T::BITS. BitOrder implementations should prefer ::new, which panics on range failure.

Parameters

  • pos: The bit position value to encode. This must be in the range 0 .. T::BITS.

Returns

pos wrapped in the BitPos marker type.

Panics

This function panics if pos is greater than or equal to T::BITS, but only in debug builds. It does not inspect pos in release builds.

Methods from Deref<Target = u8>

pub const MIN: u81.43.0[src]

pub const MAX: u81.43.0[src]

pub const BITS: u32[src]

pub fn as_ne_bytes(&self) -> &[u8; 1][src]

🔬 This is a nightly-only experimental API. (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) -> bool1.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) -> u81.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) -> u81.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) -> bool1.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) -> bool1.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) -> bool1.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) -> bool1.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) -> bool1.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) -> bool1.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) -> bool1.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) -> bool1.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) -> bool1.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) -> bool1.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) -> bool1.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 BitPos<T> where
    T: BitStore
[src]

impl<T: Copy> Copy for BitPos<T> where
    T: BitStore
[src]

impl<T: Debug> Debug for BitPos<T> where
    T: BitStore
[src]

impl<T: Default> Default for BitPos<T> where
    T: BitStore
[src]

impl<T> Deref for BitPos<T> where
    T: BitStore
[src]

type Target = u8

The resulting type after dereferencing.

impl<T: Eq> Eq for BitPos<T> where
    T: BitStore
[src]

impl<T: Hash> Hash for BitPos<T> where
    T: BitStore
[src]

impl<T: Ord> Ord for BitPos<T> where
    T: BitStore
[src]

impl<T: PartialEq> PartialEq<BitPos<T>> for BitPos<T> where
    T: BitStore
[src]

impl<T: PartialOrd> PartialOrd<BitPos<T>> for BitPos<T> where
    T: BitStore
[src]

impl<T> StructuralEq for BitPos<T> where
    T: BitStore
[src]

impl<T> StructuralPartialEq for BitPos<T> where
    T: BitStore
[src]

Auto Trait Implementations

impl<T> RefUnwindSafe for BitPos<T> where
    T: RefUnwindSafe

impl<T> Send for BitPos<T>

impl<T> Sync for BitPos<T>

impl<T> Unpin for BitPos<T> where
    T: Unpin

impl<T> UnwindSafe for BitPos<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.