xfinal_macro/
lib.rs

1use std::{str::FromStr};
2
3use proc_macro::TokenStream;
4/// This macro is used to construct a ip v4 endpoint
5#[proc_macro]
6pub fn end_point(input:TokenStream)->TokenStream{
7   let str = input.to_string();
8   let split = str.split(":");
9   let size = split.clone().count();
10   if size!=2{
11	  panic!("invalid endpoint value!")
12   }else{
13	  let vec:Vec<&str> = split.collect();
14	  let addr = vec[0];
15	  let port = vec[1];
16	  let addr:Vec<&str> = addr.split(".").collect();
17	  let addr = addr.join(",");
18	  let mut value = format!("port:{},ip_address:[{}]",port,addr);
19	  value  = "EndPoint{".to_string() + &value;
20	  value = value + "}";
21	  TokenStream::from_str(&value).unwrap()
22   }
23}