slack_messaging/blocks/elements/
image.rs

1use super::composition_objects::SlackFile;
2use serde::Serialize;
3
4/// [Image element](https://docs.slack.dev/reference/block-kit/block-elements/image-element)
5/// representation.
6///
7/// # Example
8///
9/// ```
10/// # use slack_messaging::blocks::elements::Image;
11/// let image = Image::builder()
12///     .image_url("http://placekitten.com/700/500")
13///     .alt_text("Multiple cute kittens")
14///     .build();
15///
16/// let expected = serde_json::json!({
17///     "type": "image",
18///     "image_url": "http://placekitten.com/700/500",
19///     "alt_text": "Multiple cute kittens"
20/// });
21///
22/// let json = serde_json::to_value(image).unwrap();
23///
24/// assert_eq!(json, expected);
25/// ```
26#[derive(Debug, Clone, Serialize)]
27pub struct Image {
28    #[serde(rename = "type")]
29    pub(super) kind: &'static str,
30
31    pub(super) alt_text: String,
32
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub(super) image_url: Option<String>,
35
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub(super) slack_file: Option<SlackFile>,
38}