- Rust 100%
| oct | ||
| oct-macros | ||
| .gitignore | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| clippy.toml | ||
| DOC-ICON.svg | ||
| LICENCE-APACHE.txt | ||
| LICENCE-MIT.txt | ||
| LOGO.svg | ||
| README.md | ||
Oct
This library provides facilities for safe (and hopefully sound) transmutations of Rust objects, mainly to and from octonary (bytewise) representations. These transformations may be done in two ways:
- In-place transmutations: Objects can be reinterpret between different types in-place.
- Serialisations: Objects can also be serialise into a portable representation.
These interfaces are generally safe and are designed so that most programmes can
completely avoid any unsafe code. The only unsafe interfaces provided are traits
and the low-level transmute_unchecked function.
Security
Do note that this project is still relatively early in its development. But even with the hundreds of man-hours of development so far, I very much recommend auditing it before using it in production (nevertheless the so-far soundness holes uncovered.) I would not yet use this project in critical systems – although I am confident that it will become realistic to do so at some point.
Interface stability and versioning
Breaking changes are common, and usage of this library will require continuous maintenance so as to avoid becoming stuck on an unmaintained major release. Nonetheless, core designs are likely to remain more or less the same, and most breakage will be in the form of lesser, syntactical changes, e.g. identifier renaming or parameter reordering.
The octonary format used by serialisations is not stabilised and are not on track to become stabilised. Instead, users should use in-place transmutations or custom serialisers for specific specifications.
Copyright and licence
Copyright © 2024‐2026 Gabriel Bjørnager Jensen.
This library is distributed under either an MIT licence or version 2.0 of the
Apache License, at your option. See LICENCE-MIT.txt and LICENCE-APACHE.txt
for more information.
SPDX identifier: MIT OR Apache-2.0