#![deny(
missing_docs,
clippy::missing_panics_doc,
clippy::missing_const_for_fn,
clippy::missing_safety_doc,
clippy::missing_errors_doc
)]
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(not(doctest), doc = include_str!("../README.md"))]
extern crate core;
pub use stabby_abi::{
assert_unchecked, dynptr, export, import, stabby, unreachable_unchecked, vtmacro as vtable,
};
pub use stabby_abi as abi;
pub use stabby_abi::alloc::{self, boxed, collections, string, sync, vec};
pub use stabby_abi::{Dyn, DynRef};
pub mod compiler_version;
pub mod tuple;
#[cfg_attr(
unsafe_wakers = "true",
deprecated = "Warning! you are using the `stabby/unsafe_wakers` feature. This could cause UB if you poll a future received from another shared library with mismatching ABI! (this API isn't actually deprecated)"
)]
pub mod future {
pub use crate::abi::future::*;
use crate::boxed::Box;
pub type DynFuture<'a, Output> =
crate::dynptr!(Box<dyn Future<Output = Output> + Send + Sync + 'a>);
pub type DynFutureUnsync<'a, Output> =
crate::dynptr!(Box<dyn Future<Output = Output> + Send + 'a>);
pub type DynFutureUnsend<'a, Output> = crate::dynptr!(Box<dyn Future<Output = Output> + 'a>);
}
pub use crate::abi::closure;
pub use crate::abi::{option, result, slice, str};
pub use crate::abi::{vtable::Any, AccessAs, IStable, IntoSuperTrait};
#[cfg(all(feature = "libloading", any(unix, windows, doc)))]
pub mod libloading;
pub mod time;
#[macro_export]
macro_rules! format {
($($t: tt)*) => {{
use ::core::fmt::Write;
let mut s = $crate::string::String::default();
::core::write!(s, $($t)*).map(move |_| s)
}};
}
#[cfg(doc)]
#[doc = include_str!("../TUTORIAL.md")]
pub mod _tutorial_ {}