Struct LbaRangeInclusive

Source
#[repr(C)]
pub struct LbaRangeInclusive { /* private fields */ }
Expand description

Inclusive range of logical block addresses.

Implementations§

Source§

impl LbaRangeInclusive

Source

pub const fn new(start: Lba, end: Lba) -> Option<LbaRangeInclusive>

Create an LBA range. The end address must be greater than or equal to the start address.

Source

pub const fn start(self) -> Lba

Starting LBA (inclusive).

Source

pub const fn end(self) -> Lba

Ending LBA (inclusive).

Source

pub fn from_byte_range( byte_range: RangeInclusive<u64>, block_size: BlockSize, ) -> Option<Self>

Create an LBA range from the corresponding byte range for the given block size.

The byte range must correspond precisely to block bounds, with the start byte at the beginning of a block and the end byte at the end of a block

§Examples
use gpt_disk_types::{BlockSize, LbaRangeInclusive};

let bs = BlockSize::BS_512;
let r = LbaRangeInclusive::from_byte_range(512..=1535, bs).unwrap();
assert_eq!(r.start().0, 1);
assert_eq!(r.end().0, 2);
Source

pub fn to_byte_range(self, block_size: BlockSize) -> Option<RangeInclusive<u64>>

Convert the LBA range to the corresponding byte range for the given block size.

§Examples
use gpt_disk_types::{BlockSize, Lba, LbaRangeInclusive};

let r = LbaRangeInclusive::new(Lba(1), Lba(2)).unwrap();
let bs = BlockSize::BS_512;
assert_eq!(r.to_byte_range(bs).unwrap(), 512..=1535);
Source

pub fn num_bytes(self, block_size: BlockSize) -> Option<u64>

Get the number of bytes in the LBA range for the given block size.

§Examples
use gpt_disk_types::{BlockSize, Lba, LbaRangeInclusive};

let r = LbaRangeInclusive::new(Lba(1), Lba(2)).unwrap();
let bs = BlockSize::BS_512;
assert_eq!(r.num_bytes(bs).unwrap(), 1024);
Source

pub fn num_blocks(self) -> u64

Get the number of blocks in the LBA range.

§Examples
use gpt_disk_types::{Lba, LbaRangeInclusive};

let r = LbaRangeInclusive::new(Lba(1), Lba(2)).unwrap();
assert_eq!(r.num_blocks(), 2);

Trait Implementations§

Source§

impl Clone for LbaRangeInclusive

Source§

fn clone(&self) -> LbaRangeInclusive

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LbaRangeInclusive

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for LbaRangeInclusive

Source§

fn default() -> LbaRangeInclusive

Returns the “default value” for a type. Read more
Source§

impl Display for LbaRangeInclusive

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for LbaRangeInclusive

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for LbaRangeInclusive

Source§

fn cmp(&self, other: &LbaRangeInclusive) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for LbaRangeInclusive

Source§

fn eq(&self, other: &LbaRangeInclusive) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for LbaRangeInclusive

Source§

fn partial_cmp(&self, other: &LbaRangeInclusive) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Zeroable for LbaRangeInclusive

Source§

fn zeroed() -> Self

Source§

impl Copy for LbaRangeInclusive

Source§

impl Eq for LbaRangeInclusive

Source§

impl Pod for LbaRangeInclusive

Source§

impl StructuralPartialEq for LbaRangeInclusive

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CheckedBitPattern for T
where T: AnyBitPattern,

Source§

type Bits = T

Self must have the same layout as the specified Bits except for the possible invalid bit patterns being checked during is_valid_bit_pattern.
Source§

fn is_valid_bit_pattern(_bits: &T) -> bool

If this function returns true, then it must be valid to reinterpret bits as &Self.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AnyBitPattern for T
where T: Pod,

Source§

impl<T> NoUninit for T
where T: Pod,