pub mod multi;
pub mod conversation;
pub mod external;
pub mod public_channel;
pub mod static_;
pub mod user;
#[doc(inline)]
pub use conversation::Conversation;
#[doc(inline)]
pub use external::External;
#[doc(inline)]
pub use public_channel::PublicChannel;
#[doc(inline)]
pub use static_::Static;
#[doc(inline)]
pub use user::User;
#[cfg(feature = "blox")]
#[cfg_attr(docsrs, doc(cfg(feature = "blox")))]
pub mod build {
use std::marker::PhantomData;
use super::*;
use crate::build::*;
#[allow(non_camel_case_types)]
pub mod choose {
#[derive(Debug, Clone, Copy)]
pub struct single;
#[derive(Debug, Clone, Copy)]
pub struct multi;
}
#[allow(non_camel_case_types)]
pub mod data_source {
use super::*;
#[derive(Debug, Clone, Copy)]
pub struct users;
#[derive(Debug, Clone, Copy)]
pub struct static_;
#[derive(Debug, Clone, Copy)]
pub struct external;
#[derive(Debug, Clone, Copy)]
pub struct conversations;
#[derive(Debug, Clone, Copy)]
pub struct public_channels;
pub trait SelectSubBuilder<M> {
type SubBuilder;
fn builder() -> Self::SubBuilder;
}
impl SelectSubBuilder<choose::multi> for users {
type SubBuilder = user::build::MultiUserBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
multi::User::builder()
}
}
impl SelectSubBuilder<choose::single> for users {
type SubBuilder = user::build::UserBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
User::builder()
}
}
impl SelectSubBuilder<choose::multi> for static_ {
type SubBuilder = super::static_::build::MultiStaticBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
multi::Static::builder()
}
}
impl SelectSubBuilder<choose::single> for static_ {
type SubBuilder = super::static_::build::StaticBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
Static::builder()
}
}
impl SelectSubBuilder<choose::multi> for conversations {
type SubBuilder =
super::conversation::build::MultiConversationBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
multi::Conversation::builder()
}
}
impl SelectSubBuilder<choose::single> for conversations {
type SubBuilder =
super::conversation::build::ConversationBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
Conversation::builder()
}
}
impl SelectSubBuilder<choose::multi> for public_channels {
type SubBuilder =
super::public_channel::build::MultiPublicChannelBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
multi::PublicChannel::builder()
}
}
impl SelectSubBuilder<choose::single> for public_channels {
type SubBuilder =
super::public_channel::build::PublicChannelBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
PublicChannel::builder()
}
}
impl SelectSubBuilder<choose::multi> for external {
type SubBuilder =
super::external::build::MultiExternalBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
multi::External::builder()
}
}
impl SelectSubBuilder<choose::single> for external {
type SubBuilder = super::external::build::ExternalBuilderInit<'static>;
fn builder() -> Self::SubBuilder {
External::builder()
}
}
}
#[allow(non_camel_case_types)]
pub mod method {
#[derive(Debug, Clone, Copy)]
pub struct choose_from;
}
pub type SelectBuilderInit =
SelectBuilder<Set<choose::single>,
RequiredMethodNotCalled<method::choose_from>>;
#[derive(Debug, Clone)]
pub struct SelectBuilder<Count, DataSource>(PhantomData<(DataSource, Count)>);
impl<C, D> SelectBuilder<C, D> {
pub fn new() -> Self {
Self(PhantomData::<_>)
}
pub fn kind<C2>(self, _num: C2) -> SelectBuilder<Set<C2>, D> {
SelectBuilder(PhantomData::<_>)
}
}
impl<C, D> SelectBuilder<Set<C>, D> {
pub fn choose_from<D2: data_source::SelectSubBuilder<C>>(
self,
_choose: D2)
-> D2::SubBuilder {
D2::builder()
}
}
}
pub mod select_kind {
#[derive(Copy, Clone, Debug)]
pub struct Multi;
#[derive(Copy, Clone, Debug)]
pub struct Single;
}
#[cfg(feature = "validation")]
mod validate {
use crate::{text, val_helpr::*};
pub(super) fn placeholder(text: &text::Text) -> ValidatorResult {
below_len("Select Placeholder text", 150, text.as_ref())
}
}