pub struct PartitionStatistics {
pub total_partitions: usize,
pub bootable_partitions: usize,
pub fat_partitions: usize,
pub linux_partitions: usize,
pub hidden_partitions: usize,
pub extended_partitions: usize,
pub unknown_partitions: usize,
pub total_used_sectors: u64,
pub largest_partition_sectors: u32,
pub smallest_partition_sectors: u32,
}
Expand description
Comprehensive statistics about partitions in an MBR.
This structure provides detailed statistical information about the partitions present in an MBR, including counts by type, size information, and bootability status. It’s useful for disk analysis, partition management tools, and system diagnostics.
§Fields
§Partition Counts
Total_partitions
- Total number of valid partitionsBootable_partitions
- Number of partitions marked as bootableFat_partitions
- Number of FAT file system partitions (FAT16, FAT32, etc.)Linux_partitions
- Number of Linux-type partitionsHidden_partitions
- Number of hidden partitionsExtended_partitions
- Number of extended partitionsUnknown_partitions
- Number of partitions with unknown/unrecognized types
§Size Information
Total_used_sectors
- Total sectors used by all partitionsLargest_partition_sectors
- Size of the largest partition in sectorsSmallest_partition_sectors
- Size of the smallest partition in sectors
§Examples
extern crate alloc;
use file_system::*;
let device = create_device!(Memory_device_type::<512>::new(4 * 1024 * 1024));
// Create an MBR with some partitions
let mut mbr = MBR_type::New_with_signature(0x12345678);
mbr.Add_partition(Partition_type_type::Fat32_lba, 2048, 1024, true).unwrap();
mbr.Add_partition(Partition_type_type::Linux, 4096, 2048, false).unwrap();
mbr.Write_to_device(&device).unwrap();
// Read it back and get statistics
let mbr = MBR_type::Read_from_device(&device).unwrap();
let stats = Partition_statistics_type::From_mbr(&mbr);
println!("Total partitions: {}", stats.Total_partitions);
println!("Bootable partitions: {}", stats.Bootable_partitions);
println!("Total used sectors: {}", stats.Total_used_sectors);
Fields§
§total_partitions: usize
Total number of valid partitions in the MBR.
bootable_partitions: usize
Number of partitions marked as bootable.
fat_partitions: usize
Number of FAT file system partitions.
linux_partitions: usize
Number of Linux-type partitions.
Number of hidden partitions.
extended_partitions: usize
Number of extended partitions.
unknown_partitions: usize
Number of partitions with unknown types.
total_used_sectors: u64
Total sectors used by all partitions.
largest_partition_sectors: u32
Size of the largest partition in sectors.
smallest_partition_sectors: u32
Size of the smallest partition in sectors.
Implementations§
Source§impl PartitionStatistics
impl PartitionStatistics
Sourcepub fn from_mbr(mbr: &Mbr) -> Self
pub fn from_mbr(mbr: &Mbr) -> Self
Generate comprehensive statistics from an MBR.
This method analyzes all partitions in the provided MBR and generates detailed statistics about partition types, sizes, and other characteristics.
§Arguments
Mbr
- The MBR structure to analyze
§Returns
A new Partition_statistics_type
containing the computed statistics.
§Examples
extern crate alloc;
use file_system::*;
let device = create_device!(Memory_device_type::<512>::new(4 * 1024 * 1024));
// Create an MBR with some partitions
let mut mbr = MBR_type::New_with_signature(0x12345678);
mbr.Add_partition(Partition_type_type::Fat32_lba, 2048, 1024, true).unwrap();
mbr.Add_partition(Partition_type_type::Linux, 4096, 2048, false).unwrap();
mbr.Write_to_device(&device).unwrap();
// Read it back and analyze
let mbr = MBR_type::Read_from_device(&device).unwrap();
let stats = Partition_statistics_type::From_mbr(&mbr);
if stats.Total_partitions > 0 {
println!("Average partition size: {} sectors",
stats.Total_used_sectors / stats.Total_partitions as u64);
}
Trait Implementations§
Source§impl Clone for PartitionStatistics
impl Clone for PartitionStatistics
Source§fn clone(&self) -> PartitionStatistics
fn clone(&self) -> PartitionStatistics
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more