Rust libraries for working with GPT (GUID Partition Table) disk data

Overview

gpt-disk-rs

codecov

no_std libraries related to GPT (GUID Partition Table) disk data. There are three Rust packages in this repository:

uguid

Crates.io Docs.rs

The uguid package provides the GUID type used in the UEFI Specification, and also in Microsoft Windows.

gpt_disk_types

Crates.io Docs.rs

The gpt_disk_types package provides flexible types for all the GPT types defined in the UEFI Specification. The types are designed to ensure correct endianness regardless of host platform, and can be used even with corrupted input data.

gpt_disk_io

Crates.io Docs.rs

The gpt_disk_io package depends on gpt_disk_types and adds types for reading and writing GPT data to an abstract disk interface. This interface can be implemented for any backend that supports block-level IO.

Code layout

gpt_disk_types/src:

  • block.rs: Numeric types for addressing blocks.
  • crc32.rs: CRC32 type.
  • guid.rs: Globally-unique identifier type.
  • header.rs: GPT header and related types.
  • mbr.rs: Legacy master boot record types.
  • num.rs: Little-endian integer types.
  • partition_array.rs: GPT partition array types.
  • partition_entry.rs: GPT partition array entry types.
  • std_support.rs: Provides std trait impls when the std feature is enabled.

gpt_disk_io/src:

  • block_io.rs: BlockIo trait for generic read/write operations.
  • slice_block_io.rs: In-memory byte slice implementations of BlockIo.
  • disk.rs: Read and write GPT data from a block device.
  • std_support.rs: Provides std trait impls when the std feature is enabled.

Most of the tests are under gpt_disk_io/tests, including the tests for gpt_disk_types. Having all the tests in one place allow them to share code.

License

Apache 2.0; see LICENSE for details.

Disclaimer

This project is not an official Google project. It is not supported by Google and Google specifically disclaims all warranties as to its quality, merchantability, or fitness for a particular purpose.

You might also like...
Estimate the amount of time spent working on a Git repository

jikyuu (時給) A tool to estimate the amount of time spent working on a Git repository. It is a direct port of git-hours, written in Node.js, because the

Cargo wrapper for working with Webassembly wasi(x).

cargo-wasix A cargo subcommand that wraps regular cargo commands for compiling Rust code to wasix, a superset of Websassembly wasi with additional fun

PartiQL libraries and tools in Rust.

This is a collection of crates to provide Rust support for the PartiQL query language.

Simplified glue code generation for Deno FFI libraries written in Rust.

deno_bindgen This tool aims to simplify glue code generation for Deno FFI libraries written in Rust. Quickstart # install CLI deno install -Afq -n den

mollusc is a collection of pure-Rust libraries for parsing, interpreting, and analyzing LLVM.

mollusc is a collection of pure-Rust libraries for parsing, interpreting, and analyzing LLVM.

A code generator to reduce repetitive tasks and build high-quality Rust libraries. 🦀

LibMake A code generator to reduce repetitive tasks and build high-quality Rust libraries Welcome to libmake 👋 Website • Documentation • Report Bug •

Mobile safari / webview remote debugging and e2e testing libraries

Canter (WIP) (WIP) Mobile safari / webview remote debugging and e2e testing libraries. Developed for safari/webview e2e testing on iPhone. Works only

A swc plugin that automatically converts React component libraries into "React Client Component"

A swc plugin that automatically converts React component libraries into "React Client Component". For example, you can automatically convert components from @mui into "React Client Component" without having to wrap a component that uses "use client".

Utilities to gather data out of roms. Written in Rust. It (should) support all types.

snesutilities Utilities to gather data out of roms. Written in Rust. It (should) support all types. How Have a look at main.rs: use snesutilities::Sne

Owner
Google
Google ❤️ Open Source
Google
An opinionated Rust library for interacting with AWS DynamoDB single-table designs.

Modyne An opinionated library for interacting with AWS DynamoDB single-table designs. † Motive Modyne follows the precepts laid out for effective sing

Marcus Griep 14 Jun 8, 2023
DynamoDB library for single-table design in Rust

A DynamoDB abstraction for Rust Deez is a DynamoDB abstraction for implementing Single Table Design easily, inspired by ElectroDB. Getting Started Def

null 10 Jul 2, 2023
A GPT-powered daily newsletter bot, written in Rust

AI Newsie 1. Introduction Meet AI Newsie - your personalized GPT-powered bot that delivers daily newsletters tailored to your interests. The bot is po

null 5 May 7, 2023
A tool to subscribe to Twitch channels and store them efficiently on disk

twitch-messages A tool to subscribe to Twitch channels and store them efficiently on disk Build the Tools You can start by building the binaries that

Clément Renault 1 Oct 31, 2021
Count zeroes on a disk or a file

Count zeroes on a disk or a file

Cecile Tonglet 1 Dec 12, 2021
A git prepare-commit-msg hook for authoring commit messages with GPT-3.

gptcommit A git prepare-commit-msg hook for authoring commit messages with GPT-3. With this tool, you can easily generate clear, comprehensive and des

Roger Zurawicki 3 Jan 19, 2023
A working example of multi targets compilation for Rust using Github Actions.

A working example of multi targets compilation for Rust using Github Actions. Supports Windows, MacOSX, x86_64, ARM and Raspberry PI Linux.

Nicolas Vanhoren 41 Dec 17, 2022
IDX is a Rust crate for working with RuneScape .idx-format caches.

This image proudly made in GIMP License Licensed under GNU GPL, Version 3.0, (LICENSE-GPL3 or https://choosealicense.com/licenses/gpl-3.0/) Contributi

Ceikry 5 May 27, 2022
A Rust utility library, making easier by taking the hassle out of working. :octocat:

reddish A Rust utility library, making easier by taking the hassle out of working. Usage Add this to your Cargo.toml: [dependencies] reddish = "0.2.0"

Rogério Araújo 12 Jan 21, 2023
Toolkit for working with scripts used by REDengine in Cyberpunk 2077.

redscript Toolkit for working with scripts used by REDengine in Cyberpunk 2077. Currently includes a compiler, a decompiler and a disassembler. usage

jac3km4 268 Jan 6, 2023