pub struct BitStringRef<'a> { /* private fields */ }
Expand description
ASN.1 BIT STRING
type.
This type contains a sequence of any number of bits, modeled internally as a sequence of bytes with a known number of “unused bits”.
This is a zero-copy reference type which borrows from the input data.
Implementations§
Source§impl<'a> BitStringRef<'a>
impl<'a> BitStringRef<'a>
Sourcepub const MAX_UNUSED_BITS: u8 = 7u8
pub const MAX_UNUSED_BITS: u8 = 7u8
Maximum number of unused bits allowed.
Sourcepub fn new(unused_bits: u8, bytes: &'a [u8]) -> Result<Self>
pub fn new(unused_bits: u8, bytes: &'a [u8]) -> Result<Self>
Create a new ASN.1 BIT STRING
from a byte slice.
Accepts an optional number of “unused bits” (0-7) which are omitted from the final octet. This number is 0 if the value is octet-aligned.
Sourcepub fn from_bytes(bytes: &'a [u8]) -> Result<Self>
pub fn from_bytes(bytes: &'a [u8]) -> Result<Self>
Create a new ASN.1 BIT STRING
from the given bytes.
The “unused bits” are set to 0.
Sourcepub fn unused_bits(&self) -> u8
pub fn unused_bits(&self) -> u8
Get the number of unused bits in this byte slice.
Sourcepub fn has_unused_bits(&self) -> bool
pub fn has_unused_bits(&self) -> bool
Is the number of unused bits a value other than 0?
Sourcepub fn byte_len(&self) -> Length
pub fn byte_len(&self) -> Length
Get the number of bytes/octets needed to represent this BIT STRING
when serialized in an octet-aligned manner.
Sourcepub fn as_bytes(&self) -> Option<&'a [u8]>
pub fn as_bytes(&self) -> Option<&'a [u8]>
Borrow the inner byte slice.
Returns None
if the number of unused bits is not equal to zero,
i.e. if the BIT STRING
is not octet aligned.
Use BitString::raw_bytes
to obtain access to the raw value
regardless of the presence of unused bits.
Sourcepub fn raw_bytes(&self) -> &'a [u8] ⓘ
pub fn raw_bytes(&self) -> &'a [u8] ⓘ
Borrow the raw bytes of this BIT STRING
.
Note that the byte string may contain extra unused bits in the final
octet. If the number of unused bits is expected to be 0, the
BitStringRef::as_bytes
function can be used instead.
Sourcepub fn bits(self) -> BitStringIter<'a> ⓘ
pub fn bits(self) -> BitStringIter<'a> ⓘ
Iterator over the bits of this BIT STRING
.
Trait Implementations§
Source§impl<'a> Clone for BitStringRef<'a>
impl<'a> Clone for BitStringRef<'a>
Source§fn clone(&self) -> BitStringRef<'a>
fn clone(&self) -> BitStringRef<'a>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<'a> Debug for BitStringRef<'a>
impl<'a> Debug for BitStringRef<'a>
Source§impl<'a> DecodeValue<'a> for BitStringRef<'a>
impl<'a> DecodeValue<'a> for BitStringRef<'a>
Source§impl EncodeValue for BitStringRef<'_>
impl EncodeValue for BitStringRef<'_>
Source§impl<'a> From<&'a BitString> for BitStringRef<'a>
Available on crate feature alloc
only.
impl<'a> From<&'a BitString> for BitStringRef<'a>
alloc
only.Source§fn from(bit_string: &'a BitString) -> BitStringRef<'a>
fn from(bit_string: &'a BitString) -> BitStringRef<'a>
Source§impl<'a> From<&BitStringRef<'a>> for BitStringRef<'a>
impl<'a> From<&BitStringRef<'a>> for BitStringRef<'a>
Source§fn from(value: &BitStringRef<'a>) -> BitStringRef<'a>
fn from(value: &BitStringRef<'a>) -> BitStringRef<'a>
Source§impl<'a> Ord for BitStringRef<'a>
impl<'a> Ord for BitStringRef<'a>
Source§fn cmp(&self, other: &BitStringRef<'a>) -> Ordering
fn cmp(&self, other: &BitStringRef<'a>) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<'a> PartialEq for BitStringRef<'a>
impl<'a> PartialEq for BitStringRef<'a>
Source§impl<'a> PartialOrd for BitStringRef<'a>
impl<'a> PartialOrd for BitStringRef<'a>
Source§impl<'a> RefToOwned<'a> for BitStringRef<'a>
Available on crate feature alloc
only.
impl<'a> RefToOwned<'a> for BitStringRef<'a>
alloc
only.Source§impl<'a> TryFrom<&&'a [u8]> for BitStringRef<'a>
Hack for simplifying the custom derive use case.
impl<'a> TryFrom<&&'a [u8]> for BitStringRef<'a>
Hack for simplifying the custom derive use case.
Source§impl<'a> TryFrom<&'a [u8]> for BitStringRef<'a>
impl<'a> TryFrom<&'a [u8]> for BitStringRef<'a>
Source§impl<'__der: 'a, 'a> TryFrom<&'__der Any> for BitStringRef<'a>
Available on crate feature alloc
only.
impl<'__der: 'a, 'a> TryFrom<&'__der Any> for BitStringRef<'a>
alloc
only.Source§impl<'__der: 'a, 'a> TryFrom<AnyRef<'__der>> for BitStringRef<'a>
impl<'__der: 'a, 'a> TryFrom<AnyRef<'__der>> for BitStringRef<'a>
Source§impl<'a> TryFrom<BitStringRef<'a>> for &'a [u8]
impl<'a> TryFrom<BitStringRef<'a>> for &'a [u8]
Source§impl ValueOrd for BitStringRef<'_>
impl ValueOrd for BitStringRef<'_>
impl<'a> Copy for BitStringRef<'a>
impl<'a> Eq for BitStringRef<'a>
impl<'a> StructuralPartialEq for BitStringRef<'a>
Auto Trait Implementations§
impl<'a> Freeze for BitStringRef<'a>
impl<'a> RefUnwindSafe for BitStringRef<'a>
impl<'a> Send for BitStringRef<'a>
impl<'a> Sync for BitStringRef<'a>
impl<'a> Unpin for BitStringRef<'a>
impl<'a> UnwindSafe for BitStringRef<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<'a, T> Decode<'a> for Twhere
T: DecodeValue<'a> + FixedTag,
impl<'a, T> Decode<'a> for Twhere
T: DecodeValue<'a> + FixedTag,
Source§impl<T> Encode for Twhere
T: EncodeValue + Tagged,
impl<T> Encode for Twhere
T: EncodeValue + Tagged,
Source§fn encoded_len(&self) -> Result<Length, Error>
fn encoded_len(&self) -> Result<Length, Error>
Compute the length of this value in bytes when encoded as ASN.1 DER.
Source§fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>
fn encode(&self, writer: &mut impl Writer) -> Result<(), Error>
Encode this value as ASN.1 DER using the provided Writer
.
Source§fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>
fn encode_to_slice<'a>(&self, buf: &'a mut [u8]) -> Result<&'a [u8]>
impl<T> DecodeOwned for Twhere
T: for<'a> Decode<'a>,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 40 bytes