Opt

Struct Opt 

Source
pub struct Opt<T = Text<Plain>, P = UrlUnavailable>
where T: TextExt,
{ /* private fields */ }
Expand description

Option object representation.

This is a generic struct that can represent an option object with different text object types.

§Type Parameters

  • T: The type of text object used for the text and description fields. Defaults to Text<Plain>. Must implement the TextExt trait.
  • P: A phantom type used to control the availability of the url field. Defaults to UrlUnavailable. Use UrlAvailable to include the url field.

§Fields and Validations

For more details, see the official documentation.

FieldTypeRequiredValidation
texttype parameter T bounds TextExtYesMax length 75 characters
valueStringYesMax length 150 characters
descriptiontype parameter T bounds TextExtNoMax length 75 characters
urlStringNo (only if type parameter P is UrlAvailable)Max length 3000 characters

§Example

use slack_messaging::plain_text;
use slack_messaging::composition_objects::{Opt, Plain, Text, types::UrlAvailable};

let option: Opt = Opt::builder()
    .text(plain_text!("Maru")?)
    .value("maru")
    .build()?;

let expected = serde_json::json!({
    "text": {
        "type": "plain_text",
        "text": "Maru"
    },
    "value": "maru"
});

let json = serde_json::to_value(option).unwrap();

assert_eq!(json, expected);

// Using UrlAvailable to include the url field
let option_with_url = Opt::<Text<Plain>, UrlAvailable>::builder()
   .text(plain_text!("Maru")?)
   .value("maru")
   .url("https://example.com/maru")
   .build()?;

let expected_with_url = serde_json::json!({
   "text": {
       "type": "plain_text",
       "text": "Maru"
   },
   "value": "maru",
   "url": "https://example.com/maru"
});

let json_with_url = serde_json::to_value(option_with_url).unwrap();

assert_eq!(json_with_url, expected_with_url);

// If your object has any validation errors, the build method returns Result::Err
let option = Opt::<Text<Plain>>::builder()
    .text(plain_text!("Maru")?)
    .build();

assert!(option.is_err());

Implementations§

Source§

impl<T, P> Opt<T, P>
where T: TextExt,

Source

pub fn builder() -> OptBuilder<T, P>

constract OptBuilder object.

Trait Implementations§

Source§

impl<T, P: Clone> Clone for Opt<T, P>
where T: TextExt + Clone,

Source§

fn clone(&self) -> Opt<T, P>

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T, P: Debug> Debug for Opt<T, P>
where T: TextExt + Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T, P: PartialEq> PartialEq for Opt<T, P>
where T: TextExt + PartialEq,

Source§

fn eq(&self, other: &Opt<T, P>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T, P> Serialize for Opt<T, P>
where T: TextExt + Serialize,

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl<T, P> StructuralPartialEq for Opt<T, P>
where T: TextExt,

Auto Trait Implementations§

§

impl<T, P> Freeze for Opt<T, P>
where T: Freeze,

§

impl<T, P> RefUnwindSafe for Opt<T, P>

§

impl<T, P> Send for Opt<T, P>
where P: Send, T: Send,

§

impl<T, P> Sync for Opt<T, P>
where P: Sync, T: Sync,

§

impl<T, P> Unpin for Opt<T, P>
where P: Unpin, T: Unpin,

§

impl<T, P> UnwindSafe for Opt<T, P>
where P: UnwindSafe, T: UnwindSafe,

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.