#![deny(unsafe_code)]
#![warn(clippy::all, clippy::pedantic)]
#![allow(clippy::module_name_repetitions)]
#![doc = include_str!("../README.md")]
pub mod core;
pub mod kit;
pub mod prelude;
#[cfg(feature = "async")]
pub use core::meta::AsyncAutoBuilder;
#[cfg(feature = "async")]
pub use kit::{AsyncKit, AsyncReady, AsyncUnbuilt};
#[cfg(all(test, feature = "async"))]
pub(crate) mod test_helpers {
use std::future::Future;
use std::task::{self, Poll};
pub(crate) fn block_on<F: Future>(future: F) -> F::Output {
let waker = task::Waker::noop();
#[allow(clippy::needless_borrow)]
let mut cx = task::Context::from_waker(&waker);
let mut future = std::pin::pin!(future);
loop {
match future.as_mut().poll(&mut cx) {
Poll::Ready(v) => return v,
Poll::Pending => std::hint::spin_loop(),
}
}
}
#[derive(Debug, thiserror::Error)]
#[allow(dead_code, reason = "mock error type verifies trait signature only")]
pub(crate) enum MockError {
#[error("mock build failed: {0}")]
Failed(String),
}
}