Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.59 KB | None | 0 0
  1. #[macro_export]
  2. macro_rules! my_macro {
  3. ($new_type:ident, $passed_type:ty => $body:expr) => {
  4. type $new_type = [$passed_type; 1];
  5. $body
  6. };
  7. }
  8.  
  9. trait Trait<T> {
  10. fn trait_fn(&mut self) -> String;
  11. }
  12.  
  13. struct Struct<T> {
  14. t: std::marker::PhantomData<T>,
  15. }
  16.  
  17. impl<T> Trait<T> for Struct<T> {
  18. fn trait_fn(&mut self) -> String {
  19. my_macro! {
  20. A, T => {
  21. let x: A = [0];
  22. format!("{:?}", x)
  23. }
  24. }
  25. }
  26. }
  27.  
  28. fn main() {
  29. let mut s = Struct::<u8> { t: std::marker::PhantomData };
  30. println!("{}", s.trait_fn());
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement