mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-08 12:19:24 +00:00
The `io::Write` trait is somewhat worthless, being implemented for nothing, yet `Read` remains fully functional. This also allows using its polyfills _without_ requiring `alloc`. Opportunity taken to make `schnorr-signatures` not require `alloc`. This will require a version bump before being published due to newly requiring the `alloc` feature be specified to maintain pre-existing behavior. Enables resolving https://github.com/monero-oxide/monero-oxide/issues/48.
29 lines
1.1 KiB
Markdown
29 lines
1.1 KiB
Markdown
# `std` shims
|
|
|
|
`std-shims` is a Rust crate with two purposes:
|
|
- Expand the functionality of `core` and `alloc`
|
|
- Polyfill functionality only available on newer version of Rust
|
|
|
|
The goal is to make supporting no-`std` environments, and older versions of
|
|
Rust, as simple as possible. For most use cases, replacing `std::` with
|
|
`std_shims::` and adding `use std_shims::prelude::*` is sufficient to take full
|
|
advantage of `std-shims`.
|
|
|
|
# API Surface
|
|
|
|
`std-shims` only aims to have items _mutually available_ between `alloc` (with
|
|
extra dependencies) and `std` publicly exposed. Items exclusive to `std`, with
|
|
no shims available, will not be exported by `std-shims`.
|
|
|
|
# Dependencies
|
|
|
|
`HashSet` and `HashMap` are provided via `hashbrown`. Synchronization
|
|
primitives are provided via `spin` (avoiding a requirement on
|
|
`critical-section`). Sections of `std::io` are independently matched as
|
|
possible. `rustversion` is used to detect when to provide polyfills.
|
|
|
|
# Disclaimer
|
|
|
|
No guarantee of one-to-one parity is provided. The shims provided aim to be
|
|
sufficient for the average case. Pull requests are _welcome_.
|