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 thetextanddescriptionfields. Defaults toText<Plain>. Must implement theTextExttrait.P: A phantom type used to control the availability of theurlfield. Defaults toUrlUnavailable. UseUrlAvailableto include theurlfield.
§Fields and Validations
For more details, see the official documentation.
| Field | Type | Required | Validation |
|---|---|---|---|
| text | type parameter T bounds TextExt | Yes | Max length 75 characters |
| value | String | Yes | Max length 150 characters |
| description | type parameter T bounds TextExt | No | Max length 75 characters |
| url | String | No (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,
impl<T, P> Opt<T, P>where
T: TextExt,
Sourcepub fn builder() -> OptBuilder<T, P>
pub fn builder() -> OptBuilder<T, P>
constract OptBuilder object.
Trait Implementations§
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>where
P: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, P> Send for Opt<T, P>
impl<T, P> Sync for Opt<T, P>
impl<T, P> Unpin for Opt<T, P>
impl<T, P> UnwindSafe for Opt<T, P>where
P: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)