#![doc(html_root_url = "https://docs.rs/slack-blocks/0.25.0")]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![deny(missing_docs)]
#![cfg_attr(not(test),
forbid(missing_copy_implementations,
missing_debug_implementations,
unreachable_pub,
unsafe_code,
unused_crate_dependencies))]
#[macro_use]
#[cfg(feature = "validation")]
extern crate validator_derive;
#[cfg(feature = "blox")]
#[cfg_attr(docsrs, doc(cfg(feature = "blox")))]
pub mod blox;
pub mod blocks;
pub mod compose;
pub mod elems;
mod build;
#[cfg(feature = "validation")]
mod val_helpr;
#[doc(inline)]
pub use blocks::Block;
#[doc(inline)]
pub use compose::text;
#[doc(inline)]
pub use elems::BlockElement;
mod macros {
#[macro_export]
#[doc(hidden)]
macro_rules! convert {
(impl From<$source:ty> for $dest:ty => $closure:expr) => {
impl From<$source> for $dest {
fn from(src: $source) -> Self {
$closure(src)
}
}
};
(impl<'_> From<$source:ident> for $dest:ident => $closure:expr) => {
impl<'a> From<$source<'a>> for $dest<'a> {
fn from(src: $source<'a>) -> $dest<'a> {
$closure(src)
}
}
};
(impl<$lifetime:lifetime> From<$source:ty> for $dest:ty => $closure:expr) => {
convert!(impl<$lifetime, > From<$source> for $dest => $closure);
};
(impl<$lifetime:lifetime, $($ty_var:ident),*> From<$source:ty> for $dest:ty => $closure:expr) => {
impl<$lifetime, $($ty_var),*> From<$source> for $dest {
fn from(src: $source) -> Self {
$closure(src)
}
}
};
(impl<$($ty_var:tt),+> From<$source:ty> for $dest:ty => $closure:expr) => {
impl<$($ty_var),+> From<$source> for $dest {
fn from(src: $source) -> Self {
$closure(src)
}
}
};
(impl From<impl $trait_:ident<$source:ty>> for $dest:ty => $closure:expr) => {
impl<T> From<T> for $dest where T: $trait_<$source>
{
fn from(src: T) -> Self {
$closure(src)
}
}
};
(impl<'_> From<impl $trait_:ident<$source:ident>> for $dest:ident => |$param:ident| $body:expr) => {
impl<'a, T> From<T> for $dest<'a> where T: $trait_<$source<'a>>
{
fn from($param: T) -> Self {
$body
}
}
};
}
}