dizzy 0.2.0

Macros for safely interacting with DST newtypes
Documentation
#![cfg_attr(not(any(feature = "std", test)), no_std)]
#![doc = include_str!("../README.md")]

#[cfg(feature = "alloc")]
extern crate alloc;

pub use dizzy_macros::DstNewtype;

/// A facade module for reexporting items from `std` and `alloc`.
#[doc(hidden)]
pub mod lib {
    mod core {
        #[cfg(not(feature = "std"))]
        pub use core::*;
        #[cfg(feature = "std")]
        pub use std::*;
    }

    pub use self::core::borrow;
    pub use self::core::clone;
    pub use self::core::convert;
    pub use self::core::default;
    pub use self::core::fmt;
    pub use self::core::marker;
    pub use self::core::mem;
    pub use self::core::ops;
    pub use self::core::option;
    pub use self::core::result;
    pub use self::core::str;

    pub use self::core::option::Option::{self, None, Some};
    pub use self::core::result::Result::{self, Err, Ok};

    #[cfg(all(feature = "alloc", not(feature = "std")))]
    pub use alloc::borrow::{Cow, ToOwned};
    #[cfg(feature = "std")]
    pub use std::borrow::{Cow, ToOwned};

    #[cfg(all(feature = "alloc", not(feature = "std")))]
    pub use alloc::boxed::Box;
    #[cfg(feature = "std")]
    pub use std::boxed::Box;

    #[cfg(all(feature = "alloc", not(feature = "std")))]
    pub use alloc::string::String;
    #[cfg(feature = "std")]
    pub use std::string::String;

    #[cfg(all(feature = "alloc", not(feature = "std")))]
    pub use alloc::vec::Vec;
    #[cfg(feature = "std")]
    pub use std::vec::Vec;
}

/// The trivial invariant.
///
/// This function will always return `Ok(())`.
#[inline(always)]
pub const fn trivial<T: ?Sized>(_: &T) -> Result<(), core::convert::Infallible> {
    Ok(())
}