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}