1use segments::TextSegment;
2
3pub mod message_ext;
4pub mod segments;
5
6pub type Message = Vec<segments::Segment>;
7
8pub trait IntoMessage {
9 fn into_message(self) -> Message;
10}
11
12impl IntoMessage for String {
13 fn into_message(self) -> Message {
14 vec![segments::Segment::Text(TextSegment { text: self })]
15 }
16}
17
18impl IntoMessage for &str {
19 fn into_message(self) -> Message {
20 vec![segments::Segment::Text(TextSegment {
21 text: self.to_string(),
22 })]
23 }
24}
25
26impl IntoMessage for &String {
27 fn into_message(self) -> Message {
28 vec![segments::Segment::Text(TextSegment { text: self.clone() })]
29 }
30}
31
32impl<T> IntoMessage for Vec<T>
33where
34 T: Into<segments::Segment>,
35{
36 fn into_message(self) -> Message {
37 self.into_iter().map(|s| s.into()).collect()
38 }
39}