#[non_exhaustive]pub struct PlanRequest {
pub volume_bytes: u64,
pub bytes_per_sector: u32,
pub cluster_size: ClusterSize,
pub boundary_align: BoundaryAlign,
}Expand description
What to plan.
Every input is a field rather than a parameter, so a knob the planner grows arrives as a field a caller may ignore.
// A 512 MiB volume, formatted the way convention formats one.
let layout = plan_layout(&PlanRequest::new(512 << 20))?;
assert_eq!(layout.bytes_per_sector, 512);
assert_eq!(layout.bytes_per_cluster, 32 << 10);
// The same volume with the allocation unit pinned, which moves everything behind it.
let small = plan_layout(&PlanRequest::new(512 << 20).cluster_size(ClusterSize::Bytes(512)))?;
assert_eq!(small.cluster_count, 1_038_336);
assert!(small.cluster_count > layout.cluster_count);Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.volume_bytes: u64The volume’s size in bytes. A size that is not a whole number of sectors is rounded down, since a partial sector is not addressable.
bytes_per_sector: u32Bytes per logical sector: 512, 1024, 2048, or 4096. Defaults to 512.
cluster_size: ClusterSizeThe allocation unit. Defaults to ClusterSize::Auto.
boundary_align: BoundaryAlignThe boundary the allocation table and the cluster heap begin on. Defaults to
BoundaryAlign::Auto.
Implementations§
Source§impl PlanRequest
impl PlanRequest
Sourcepub const fn new(volume_bytes: u64) -> Self
pub const fn new(volume_bytes: u64) -> Self
A request for a volume of volume_bytes, with every knob at the value convention
selects for a volume that size.
Sourcepub const fn bytes_per_sector(self, bytes: u32) -> Self
pub const fn bytes_per_sector(self, bytes: u32) -> Self
This request with the sector size replaced.
Sourcepub const fn cluster_size(self, size: ClusterSize) -> Self
pub const fn cluster_size(self, size: ClusterSize) -> Self
This request with the allocation unit replaced.
Sourcepub const fn boundary_align(self, align: BoundaryAlign) -> Self
pub const fn boundary_align(self, align: BoundaryAlign) -> Self
This request with the alignment boundary replaced.
Trait Implementations§
Source§impl Clone for PlanRequest
impl Clone for PlanRequest
Source§fn clone(&self) -> PlanRequest
fn clone(&self) -> PlanRequest
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PlanRequest
impl Debug for PlanRequest
Source§impl PartialEq for PlanRequest
impl PartialEq for PlanRequest
Source§fn eq(&self, other: &PlanRequest) -> bool
fn eq(&self, other: &PlanRequest) -> bool
Tests for
self and other values to be equal, and is used by ==.impl Copy for PlanRequest
impl Eq for PlanRequest
impl StructuralPartialEq for PlanRequest
Auto Trait Implementations§
impl Freeze for PlanRequest
impl RefUnwindSafe for PlanRequest
impl Send for PlanRequest
impl Sync for PlanRequest
impl Unpin for PlanRequest
impl UnsafeUnpin for PlanRequest
impl UnwindSafe for PlanRequest
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
Mutably borrows from an owned value. Read more