slack_hook2/macros.rs
1/// helper macro to avoid the `TryInto` boilerplate for builder functions
2macro_rules! url_builder_fn {
3 {
4 $(#[$meta:meta])+
5 $name:ident, $builder:ident
6 } => {
7 $(#[$meta])+
8 pub fn $name(self, $name: &str) -> $builder {
9 use crate::error::SlackError;
10 match self.inner {
11 Ok(mut inner) => {
12 match Url::parse($name) {
13 Ok(url) => {
14 inner.$name = Some(url);
15 $builder { inner: Ok(inner) }
16 }
17 Err(e) => $builder { inner: Err(SlackError::Url(e.into())) },
18 }
19 }
20 _ => self,
21 }
22 }
23 }
24}