[][src]Struct slack_blocks::blocks::context::Contents

pub struct Contents { /* fields omitted */ }

Context Block

slack api docs 🔗

Displays message context, which can include both images and text.

Implementations

impl Contents[src]

pub fn new() -> Self[src]

Create an empty Context block (shorthand for Default::default())

Example

use slack_blocks::blocks::{Block, context};
use slack_blocks::text;

let context = context::Contents::new()
    .with_element(text::Plain::from("my unformatted text"));

let block: Block = context.into();
// < send block to slack's API >

pub fn with_block_id(self, block_id: impl ToString) -> Self[src]

Set the block_id for interactions on an existing context::Contents

Arguments

  • block_id - A string acting as a unique identifier for a block. You can use this block_id when you receive an interaction payload to identify the source of the action 🔗. If not specified, a block_id will be generated. Maximum length for this field is 255 characters.

Example

use slack_blocks::blocks::{Block, context};
use slack_blocks::text;

let text = text::Mrkdwn::from("_flavor_ *text*");
let context: Block = context::Contents::new()
    .with_element(text)
    .with_block_id("msg_id_12346")
    .into();

// < send block to slack's API >

pub fn from_elements(
    elements: impl IntoIterator<Item = impl Into<Compose>>
) -> Result<Self, UnsupportedComposeError>
[src]

Construct a new context::Contents from a collection of composition objects that are definitely supported by Context Blocks.

If you can guarantee that a collection only contains image or text objects, from_context_elements may be more ergonomic for you.

Arguments

  • elements - An array of composition objects; Must be image elements or text objects. Maximum number of items is 10.

Examples

use slack_blocks::blocks::{Block, context};
use slack_blocks::text;

let text = text::Mrkdwn::from("*s i c k*");
let context = context::Contents::from_elements(vec![text])?;
let block: Block = context.into();
// < send block to slack's API >

pub fn with_element(self, element: impl Into<Compose>) -> Self[src]

Add a composition object to a context block.

This is chainable, and can be used to easily populate the elements of a context block right after invoking new.

Arguments

  • element - A composition object; Must be image elements or text objects. Maximum number of items is 10.

Example

use slack_blocks::blocks::{Block, context};
use slack_blocks::text;

let context = context::Contents::new()
    .with_element(text::Plain::from("my unformatted text"));

let block: Block = context.into();
// < send block to slack's API >

pub fn from_context_elements(
    elements: impl IntoIterator<Item = impl Into<Compose>>
) -> Self
[src]

Construct a new context::Contents from a collection of composition objects that are may not be supported by Context Blocks.

If you can't guarantee that a collection only contains image or text objects, from_elements may be more ergonomic for you.

Arguments

  • elements - An array of composition objects; Must be image elements or text objects. Maximum number of items is 10.

Examples

use slack_blocks::blocks::{Block, context};
use slack_blocks::text;

pub fn main() {
    let objs: Vec<text::Mrkdwn> = vec![
        text::Mrkdwn::from("*s i c k*"),
        text::Mrkdwn::from("*t i g h t*"),
    ];
    let context = context::Contents::from_context_elements(objs);
    let block: Block = context.into();
    // < send block to slack's API >
}

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

Validate that this Context block agrees with Slack's model requirements

Errors

  • If with_block_id was called with a block id longer than 255 chars
  • If from_elements, from_context_elements, or with_element was called with more than 10 objects

Example

use slack_blocks::blocks;

let long_string = std::iter::repeat(' ').take(256).collect::<String>();

let block = blocks::context
    ::Contents
    ::new()
    .with_block_id(long_string);

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

Trait Implementations

impl Clone for Contents[src]

impl Debug for Contents[src]

impl Default for Contents[src]

impl<'de> Deserialize<'de> for Contents[src]

impl From<Contents> for Block[src]

impl From<Vec<Compose>> for Contents[src]

impl Hash for Contents[src]

impl PartialEq<Contents> for Contents[src]

impl Serialize for Contents[src]

impl StructuralPartialEq for Contents[src]

impl Validate for Contents[src]

Auto Trait Implementations

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.