From 4ae7f49555583b0d02fe73354e79243980545b60 Mon Sep 17 00:00:00 2001 From: Daniel Mueller Date: Sun, 29 Dec 2019 09:22:57 -0800 Subject: Update lazy_static crate to 1.4.0 This change updates the lazy_static crate version to 1.4.0. Import subrepo lazy-static/:lazy-static at 421669662b35fcb455f2902daed2e20bbbba79b6 --- lazy-static/src/inline_lazy.rs | 18 +++++------------- lazy-static/src/lib.rs | 19 +++++++++++-------- 2 files changed, 16 insertions(+), 21 deletions(-) (limited to 'lazy-static/src') diff --git a/lazy-static/src/inline_lazy.rs b/lazy-static/src/inline_lazy.rs index 268dd45..219ce9c 100644 --- a/lazy-static/src/inline_lazy.rs +++ b/lazy-static/src/inline_lazy.rs @@ -10,13 +10,16 @@ extern crate std; use self::std::prelude::v1::*; use self::std::cell::Cell; +use self::std::hint::unreachable_unchecked; use self::std::sync::Once; +#[allow(deprecated)] pub use self::std::sync::ONCE_INIT; -// FIXME: Replace Option with MaybeInitialized +// FIXME: Replace Option with MaybeUninit (stable since 1.36.0) pub struct Lazy(Cell>, Once); impl Lazy { + #[allow(deprecated)] pub const INIT: Self = Lazy(Cell::new(None), ONCE_INIT); #[inline(always)] @@ -29,7 +32,7 @@ impl Lazy { }); // `self.0` is guaranteed to be `Some` by this point - // The `Once` will catch and propegate panics + // The `Once` will catch and propagate panics unsafe { match *self.0.as_ptr() { Some(ref x) => x, @@ -52,14 +55,3 @@ macro_rules! __lazy_static_create { static $NAME: $crate::lazy::Lazy<$T> = $crate::lazy::Lazy::INIT; }; } - -/// Polyfill for std::hint::unreachable_unchecked. There currently exists a -/// [crate](https://docs.rs/unreachable) for an equivalent to std::hint::unreachable_unchecked, but -/// lazy_static currently doesn't include any runtime dependencies and we've chosen to include this -/// short polyfill rather than include a new crate in every consumer's build. -/// -/// This should be replaced by std's version when lazy_static starts to require at least Rust 1.27. -unsafe fn unreachable_unchecked() -> ! { - enum Void {} - match std::mem::uninitialized::() {} -} diff --git a/lazy-static/src/lib.rs b/lazy-static/src/lib.rs index 42dc405..cada0dc 100644 --- a/lazy-static/src/lib.rs +++ b/lazy-static/src/lib.rs @@ -90,17 +90,13 @@ The `Deref` implementation uses a hidden static variable that is guarded by an a # Cargo features -This crate provides two cargo features: +This crate provides one cargo feature: -- `nightly`: This uses unstable language features only available on the nightly release channel for a more optimal implementation. In practice this currently means avoiding a heap allocation per static. This feature might get deprecated at a later point once all relevant optimizations are usable from stable. -- `spin_no_std` (implies `nightly`): This allows using this crate in a no-std environment, by depending on the standalone `spin` crate. - -Both features depend on unstable language features, which means -no guarantees can be made about them in regard to SemVer stability. +- `spin_no_std`: This allows using this crate in a no-std environment, by depending on the standalone `spin` crate. */ -#![doc(html_root_url = "https://docs.rs/lazy_static/1.2.0")] +#![doc(html_root_url = "https://docs.rs/lazy_static/1.4.0")] #![no_std] #[cfg(not(feature = "spin_no_std"))] @@ -108,6 +104,13 @@ no guarantees can be made about them in regard to SemVer stability. #[doc(hidden)] pub mod lazy; +#[cfg(test)] +#[macro_use] +extern crate doc_comment; + +#[cfg(test)] +doctest!("../README.md"); + #[cfg(feature = "spin_no_std")] #[path="core_lazy.rs"] #[doc(hidden)] @@ -196,7 +199,7 @@ pub trait LazyStatic { /// extern crate lazy_static; /// /// lazy_static! { -/// static ref BUFFER: Vec = (0..65537).collect(); +/// static ref BUFFER: Vec = (0..255).collect(); /// } /// /// fn main() { -- cgit v1.2.1