{
  "array-init": {
    "description": "`core::array::from_fn` (stable since Rust 1.63) builds a fixed-size array from an index closure. The fallible variant (`try_from_fn`) is unstable, and the crate's iterator-based constructors (`from_iter`) have no `std` equivalent yet.",
    "url": "https://doc.rust-lang.org/std/array/fn.from_fn.html"
  },
  "assert_matches": {
    "description": "`assert_matches!()` and `debug_assert_matches!()` are in `std` since Rust 1.96 (in `std::assert_matches`, not the prelude). The crate's `=> arm` form, which yields a value or runs extra assertions on the bindings, has no `std` equivalent.",
    "url": "https://doc.rust-lang.org/std/macro.assert_matches.html"
  },
  "atty": {
    "description": "`std::io::IsTerminal` has been in `std` since Rust 1.70, providing the `is_terminal()` method this crate offered.",
    "url": "https://doc.rust-lang.org/std/io/trait.IsTerminal.html"
  },
  "cfg-if": {
    "description": "`cfg_select!` has been in `std` since Rust 1.95, providing identical functionality (albeit with modified syntax) to the `cfg_if!` macro this crate offered.",
    "url": "https://doc.rust-lang.org/std/macro.cfg_select.html"
  },
  "clamp": {
    "description": "`Ord::clamp()` and `f32::clamp()` / `f64::clamp()` (stable since Rust 1.50) restrict a value to a range, replacing this crate.",
    "url": "https://doc.rust-lang.org/std/cmp/trait.Ord.html#method.clamp"
  },
  "cstr": {
    "description": "C-string literals (`c\"...\"`) have been stable since Rust 1.77 and produce a `&'static CStr` from a literal. The identifier form (`cstr!(name)`) has no direct equivalent.",
    "url": "https://doc.rust-lang.org/reference/tokens.html#c-string-and-raw-c-string-literals"
  },
  "cstr_core": {
    "description": "`CStr` moved into `core::ffi` and `CString` into `alloc::ffi`, both stable since Rust 1.64, so `no_std` crates no longer need this backport.",
    "url": "https://doc.rust-lang.org/core/ffi/struct.CStr.html"
  },
  "cty": {
    "description": "`core::ffi` (stable since Rust 1.64) provides the C primitive type aliases (`c_char`, `c_int`, etc.) without `std`. The C99 `int32_t`/`size_t`-style aliases have no stable `core` equivalent.",
    "url": "https://doc.rust-lang.org/core/ffi/index.html"
  },
  "home": {
    "description": "`std::env::home_dir` was fixed and un-deprecated in Rust 1.87, providing the same functionality as this crate's `home_dir` method.\n\nThe `cargo_home` and `rustup_home` methods are not superseded, but are much more special-purpose.",
    "url": "https://doc.rust-lang.org/std/env/fn.home_dir.html"
  },
  "ilog": {
    "description": "Integer logarithms are in `std` as `ilog2()`, `ilog10()`, and `ilog()` (plus `checked_` variants) on the integer types, stable since Rust 1.67.",
    "url": "https://doc.rust-lang.org/std/primitive.u32.html#method.ilog2"
  },
  "integer-sqrt": {
    "description": "The integer square root is in `std` since Rust 1.84 as `isqrt()` on every integer type, along with `checked_isqrt()` and `NonZero::isqrt()`.",
    "url": "https://doc.rust-lang.org/std/primitive.u32.html#method.isqrt"
  },
  "io-lifetimes": {
    "description": "The I/O safety APIs, stabilized in 1.66.0, were prototyped in the `io-lifetimes` crate before being merged into `std` (with minor renamings). The `*Filelike` and `*Socketlike` APIs have no equivalent in `std`, instead requiring platform-specific code.",
    "url": "https://doc.rust-lang.org/std/io/index.html#io-safety"
  },
  "is-terminal": {
    "description": "`std::io::IsTerminal` has been in `std` since Rust 1.70, providing the `is_terminal()` method this crate offered.",
    "url": "https://doc.rust-lang.org/std/io/trait.IsTerminal.html"
  },
  "is_sorted": {
    "description": "`Iterator::is_sorted` (stable since Rust 1.82) provides the same functionalityof this crate.",
    "url": "https://doc.rust-lang.org/nightly/core/iter/trait.Iterator.html?search#method.is_sorted"
  },
  "lazy_static": {
    "description": "The standard library provides `std::sync::LazyLock` (stable since Rust 1.80), which lets you replace the `lazy_static!` macro with a plain `static` and remove the dependency.",
    "url": "https://doc.rust-lang.org/std/sync/struct.LazyLock.html"
  },
  "lazycell": {
    "description": "`std::cell::OnceCell` (Rust 1.70) and `LazyCell` (Rust 1.80) cover the single-threaded lazily-filled cell. `std::sync::OnceLock` / `LazyLock` cover the thread-safe `AtomicLazyCell`. The fallible fill (`get_or_try_init`) is still unstable.",
    "url": "https://doc.rust-lang.org/std/cell/struct.OnceCell.html"
  },
  "matches": {
    "description": "The `matches!` macro has been in `std` since Rust 1.42, and `assert_matches!` / `debug_assert_matches!` followed in Rust 1.96.",
    "url": "https://doc.rust-lang.org/std/macro.matches.html"
  },
  "maybe-uninit": {
    "description": "This crate was a backport of `std::mem::MaybeUninit`, which has been stable since Rust 1.36 and fully replaces it.",
    "url": "https://doc.rust-lang.org/std/mem/union.MaybeUninit.html"
  },
  "memoffset": {
    "description": "Most of the functionality of this crate now exists in `std::mem::offset_of!` as of Rust 1.77.\n\nThe functionality of `span_of!` does not exist in the standard library.",
    "url": "https://doc.rust-lang.org/std/mem/macro.offset_of.html"
  },
  "no-std-net": {
    "description": "`core::net` (stable since Rust 1.77) provides the IP and socket address types (`IpAddr`, `SocketAddr`, etc.) without `std`. The `ToSocketAddrs` trait has no `core` equivalent.",
    "url": "https://doc.rust-lang.org/core/net/index.html"
  },
  "nodrop": {
    "description": "Provided in the standard library as `ManuallyDrop`.\n\nAlso see the related `MaybeUninit`.",
    "url": "https://doc.rust-lang.org/std/mem/struct.ManuallyDrop.html"
  },
  "num_cpus": {
    "description": "For most uses, `std::thread::available_parallelism` (Rust 1.59) returns the parallelism available to the process. (It does not distinguish physical vs logical cores the way `num_cpus` does.)",
    "url": "https://doc.rust-lang.org/std/thread/fn.available_parallelism.html"
  },
  "once_cell": {
    "description": "Most of `once_cell` is now in `std`: `OnceCell`/`OnceLock` (Rust 1.70) and `LazyCell`/`LazyLock` (Rust 1.80). The `race` module and fallible `get_or_try_init` have no stable `std` equivalent yet.",
    "url": "https://blog.rust-lang.org/2024/07/25/Rust-1.80.0/"
  },
  "os_pipe": {
    "description": "`std::io::pipe` (stable since 1.87.0) provides support for creating OS pipes for interprocess\ncommunication, providing the `pipe` function this crate offered.",
    "url": "https://doc.rust-lang.org/std/io/fn.pipe.html"
  },
  "pin-utils": {
    "description": "The `pin!` macro, stabilized in 1.68.0, pins a value locally to the stack, providing a more convenient version of `pin-utils`'s `pin_mut!`. The other functionality of the crate, its `unsafe_pinned!` and `unsafe_unpinned!` projection helpers, are already deprecated in favor of `pin-project` and `pin-project-lite`.",
    "url": "https://doc.rust-lang.org/std/pin/macro.pin.html"
  },
  "retain_mut": {
    "description": "The standard library provides `Vec::retain_mut` and `VecDeque::retain_mut` (stable since Rust 1.61), which accept a `&mut T` in the predicate, replacing the need for this crate.",
    "url": "https://doc.rust-lang.org/std/vec/struct.Vec.html#method.retain_mut"
  },
  "sptr": {
    "description": "The Strict Provenance APIs, stabilized in 1.84.0, were originally prototyped in the `sptr` crate before being included in `std`. The crate also provides \"non-standard extensions\" in the `uptr`, `iptr` and `OpaqueFnPtr` types, which do not have `std` equivalents.",
    "url": "https://doc.rust-lang.org/std/ptr/index.html#strict-provenance"
  },
  "void": {
    "description": "`std::convert::Infallible` (stable since Rust 1.34) covers every use of the `Void` type. The crate's `Result` extension helpers have no stable equivalent yet (`Result::into_ok` / `into_err` are unstable).",
    "url": "https://doc.rust-lang.org/std/convert/enum.Infallible.html"
  }
}
