Struct slack_blocks::compose::opt::Opt [−][src]
pub struct Opt<Marker = ()> { /* fields omitted */ }
Option Object
An object that represents a single selectable item in a
Implementations
impl Opt
[src]
impl Opt
[src]pub fn from_plain_text_and_value(
text: impl Into<Plain>,
value: impl ToString
) -> Opt<FromText<Plain>>
[src]
pub fn from_plain_text_and_value(
text: impl Into<Plain>,
value: impl ToString
) -> Opt<FromText<Plain>>
[src]Create an Option composition object from its label and a value to be sent back to your app when it is chosen.
This returns an Opt
that can be used by
overflow, select, and multi-select menus.
To construct an Opt
that can be used by
radio buttons or checkboxes, see from_mrkdwn_and_value
.
Arguments
-
text
- A text object 🔗 that defines the text shown in the option on the menu. Overflow, select, and multi-select menus can only useplain_text
objects, while radio buttons and checkboxes can usemrkdwn
text objects. Maximum length for thetext
in this field is 75 characters. -
value
- The string value that will be passed to your app when this option is chosen. Maximum length for this field is 75 characters.
Examples
use slack_blocks::text; use slack_blocks::blocks::Block; use slack_blocks::blocks::section::Contents as Section; use slack_blocks::blocks::actions::Contents as Actions; use slack_blocks::compose::Opt; let cities = vec![ ("San Francisco", "san_francisco"), ("San Diego", "san_diego"), ("New York City", "nyc"), ("Phoenix", "phx"), ("Boston", "boston"), ("Seattle", "seattle"), ] .into_iter() .map(|(title, short_code)| Opt::from_plain_text_and_value(title, short_code)) .collect::<Vec<_>>(); let blocks: Vec<Block> = vec![ Section::from_text(text::Plain::from("Choose your favorite city...")).into(), Actions::from_action_elements(vec![]).into() // TODO: add overflow to this example once it exists ]; // < send block to slack's API >
pub fn from_mrkdwn_and_value(
text: impl Into<Mrkdwn>,
value: impl ToString
) -> Opt<FromText<Mrkdwn>>
[src]
pub fn from_mrkdwn_and_value(
text: impl Into<Mrkdwn>,
value: impl ToString
) -> Opt<FromText<Mrkdwn>>
[src]Create an Option composition object from its label and a value to be sent back to your app when it is chosen.
This returns an Opt
that can be used by
radio buttons or checkboxes.
To construct an Opt
that can be used by
overflow, select, and multi-select menus,
see from_plain_text_and_value
.
Arguments
-
text
- A text object 🔗 that defines the text shown in the option on the menu. Overflow, select, and multi-select menus can only useplain_text
objects, while radio buttons and checkboxes can usemrkdwn
text objects. Maximum length for thetext
in this field is 75 characters. -
value
- The string value that will be passed to your app when this option is chosen. Maximum length for this field is 75 characters.
Examples
use slack_blocks::text; use slack_blocks::blocks::Block; use slack_blocks::blocks::section::Contents as Section; use slack_blocks::blocks::actions::Contents as Actions; use slack_blocks::compose::Opt; let options = vec![ "1", "2", "3", "4", "5", ] .into_iter() .map(|num| Opt::from_mrkdwn_and_value(num, num)) .collect::<Vec<_>>(); let blocks: Vec<Block> = vec![ Section::from_text(text::Plain::from("On a scale from 1 to 5...")).into(), Actions::from_action_elements(vec![]).into() // TODO: add radio buttons to this example once it exists ]; // < send block to slack's API >
impl<M> Opt<M>
[src]
impl<M> Opt<M>
[src]pub fn with_description(self, desc: impl Into<Mrkdwn>) -> Self
[src]
pub fn with_description(self, desc: impl Into<Mrkdwn>) -> Self
[src]Chainable setter method, that sets a description for this Opt
.
Arguments
desc
- Aplain_text
only text object 🔗 that defines a line of descriptive text shown below thetext
field beside the radio button. Maximum length for thetext
object within this field is 75 characters.
Example
use slack_blocks::text; use slack_blocks::blocks::Block; use slack_blocks::blocks::section::Contents as Section; use slack_blocks::blocks::actions::Contents as Actions; use slack_blocks::compose::Opt; let options = vec![ ("1", "Hated it."), ("2", "Didn't like it."), ("3", "It was OK."), ("4", "Liked it!"), ("5", "New favorite!!"), ] .into_iter() .map(|(num, desc)| { Opt::from_mrkdwn_and_value(num, num) .with_description(desc) }) .collect::<Vec<_>>(); let blocks: Vec<Block> = vec![ Section::from_text(text::Plain::from("On a scale from 1 to 5...")).into(), Actions::from_action_elements(vec![]).into() // TODO: add radio buttons to this example once it exists ]; // < send block to slack's API >
pub fn validate(&self) -> Result<(), ValidationErrors>
[src]
pub fn validate(&self) -> Result<(), ValidationErrors>
[src]Validate that this Option composition object agrees with Slack’s model requirements
Errors
- If
from_plain_text_and_value
orfrom_mrkdwn_and_value
was called withtext
longer than 75 chars - If
from_plain_text_and_value
orfrom_mrkdwn_and_value
was called withvalue
longer than 75 chars - If
with_url
was called with url longer than 3000 chars - If
with_description
was called with text longer than 75 chars
Example
use slack_blocks::compose::Opt; use std::iter::repeat; let long_string: String = repeat(' ').take(76).collect(); let opt = Opt::from_plain_text_and_value("My Option", long_string); assert_eq!(true, matches!(opt.validate(), Err(_)));
impl Opt<FromText<Plain>>
[src]
impl Opt<FromText<Plain>>
[src]pub fn with_url(self, url: impl ToString) -> Opt<FromPlainTextWithUrl>
[src]
pub fn with_url(self, url: impl ToString) -> Opt<FromPlainTextWithUrl>
[src]Chainable setter method, that sets a description for this Opt
.
The url
attribute is only available in overflow menus 🔗.
If you’re using url
, you’ll still receive an interaction payload 🔗
and will need to send an acknowledgement response 🔗.
Arguments
url
- A URL to load in the user’s browser when the option is clicked. Maximum length for this field is 3000 characters.
Example
use slack_blocks::text; use slack_blocks::blocks::Block; use slack_blocks::blocks::section::Contents as Section; use slack_blocks::blocks::actions::Contents as Actions; use slack_blocks::compose::Opt; let cities = vec![ ("San Francisco", "san_francisco", "https://www.sftravel.com/"), ("San Diego", "san_diego", "https://www.sandiego.org/explore.aspx"), ("New York City", "nyc", "https://www.nycgo.com/"), ("Phoenix", "phx", "https://www.visitphoenix.com/"), ("Boston", "boston", "https://www.boston.gov/visiting-boston"), ("Seattle", "seattle", "https://visitseattle.org/"), ] .into_iter() .map(|(title, short_code, travel_link)| { Opt::from_plain_text_and_value(title, short_code) .with_url(travel_link) }) .collect::<Vec<_>>(); let blocks: Vec<Block> = vec![ Section::from_text(text::Plain::from("Choose your favorite city...")).into(), Actions::from_action_elements(vec![]).into() // TODO: add overflow to this example once it exists ]; // < send block to slack's API >
Trait Implementations
impl<'de, Marker> Deserialize<'de> for Opt<Marker>
[src]
impl<'de, Marker> Deserialize<'de> for Opt<Marker>
[src]fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
[src]Deserialize this value from the given Serde deserializer. Read more
impl<Marker> StructuralPartialEq for Opt<Marker>
[src]
Auto Trait Implementations
impl<Marker> RefUnwindSafe for Opt<Marker> where
Marker: RefUnwindSafe,
Marker: RefUnwindSafe,
impl<Marker> Send for Opt<Marker> where
Marker: Send,
Marker: Send,
impl<Marker> Sync for Opt<Marker> where
Marker: Sync,
Marker: Sync,
impl<Marker> Unpin for Opt<Marker> where
Marker: Unpin,
Marker: Unpin,
impl<Marker> UnwindSafe for Opt<Marker> where
Marker: UnwindSafe,
Marker: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more
impl<T> DeserializeOwned for T where
T: for<'de> Deserialize<'de>,
[src]
T: for<'de> Deserialize<'de>,