[][src]Struct slack_blocks::compose::opt_group::OptGroup

pub struct OptGroup<M = ()> { /* fields omitted */ }

Implementations

impl OptGroup<()>[src]

pub fn from_label_and_opts<M>(
    label: impl Into<Plain>,
    options: impl IntoIterator<Item = Opt<M>>
) -> OptGroup<M>
[src]

Construct an Option Group from a label and collection of options in the group

Arguments

  • label - A plain_text only text object 🔗 that defines the label shown above this group of options. Maximum length for the text in this field is 75 characters.
  • opts - An array of option objects 🔗 that belong to this specific group. Maximum of 100 items.

Example

use slack_blocks::blocks::Block;
use slack_blocks::blocks::section::Contents as Section;
use slack_blocks::blocks::actions::Contents as Actions;
use slack_blocks::text::{Mrkdwn};
use slack_blocks::compose::{OptGroup, Opt};

let prompt = "Choose your favorite city from each state!";

let blocks: Vec<Block> = vec![
    Section::from_text(Mrkdwn::from(prompt)).into(),
    // TODO: insert option group once block elements are in place
    Actions::from_action_elements(vec![]).into(),
];

let groups: Vec<OptGroup<_>> = vec![
    OptGroup::from_label_and_opts(
        "Arizona",
        vec![
            Opt::from_mrkdwn_and_value("Phoenix", "az_phx"),
            // etc...
        ]
    ),
    OptGroup::from_label_and_opts(
        "California",
        vec![
            Opt::from_mrkdwn_and_value("San Diego", "ca_sd"),
            // etc...
        ]
    ),
];

impl<M> OptGroup<M>[src]

pub fn validate(&self) -> Result<(), ValidationErrors>[src]

Validate that this Option Group object agrees with Slack's model requirements

Errors

  • If from_label_and_opts was called with label longer than 75 chars
  • If from_label_and_opts was called with more than 100 options

Example

use slack_blocks::compose::{OptGroup, Opt};
use std::iter::repeat;

let long_string: String = repeat(' ').take(76).collect();

let opt = Opt::from_mrkdwn_and_value("San Diego", "ca_sd");
let grp = OptGroup::from_label_and_opts(long_string, vec![opt]);

assert_eq!(true, matches!(grp.validate(), Err(_)));

Trait Implementations

impl<M: Clone> Clone for OptGroup<M>[src]

impl<M: Debug> Debug for OptGroup<M>[src]

impl<'de, M> Deserialize<'de> for OptGroup<M> where
    M: Deserialize<'de>, 
[src]

impl<M: Hash> Hash for OptGroup<M>[src]

impl<M: PartialEq> PartialEq<OptGroup<M>> for OptGroup<M>[src]

impl<M> Serialize for OptGroup<M> where
    M: Serialize
[src]

impl<M> StructuralPartialEq for OptGroup<M>[src]

impl<M> Validate for OptGroup<M>[src]

Auto Trait Implementations

impl<M> RefUnwindSafe for OptGroup<M> where
    M: RefUnwindSafe

impl<M> Send for OptGroup<M> where
    M: Send

impl<M> Sync for OptGroup<M> where
    M: Sync

impl<M> Unpin for OptGroup<M> where
    M: Unpin

impl<M> UnwindSafe for OptGroup<M> where
    M: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.