.item(Item1::new())
                  
                  
                      .item(Item2::new())
                  
                  
                      .perform()?;
                  
                  
                  
                  
                  
                  match something.get() {
                  
                  
                      Some(Item1::VALUE) = Item1::execute(),
                  
                  
                      Some(Item2::VALUE) = Item2::execute(),
                  
                  
                      None => handle_error()
                  
                  
                  }
                  
                  
                  
                  
                  
                  Возможно ли как-то сделать такой макрос, который делал бы так:
                  
                  
                  perform!(Item1, Item2)?;
                  
                  
                  
                  
                  
                  То есть передать туда произвольный набор типов, реализующих нужный трейт, а они уже подставятся в нужном количестве в выражение на правильные места
                  
                  
                
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=a1e7e0afd72a430cfa394b1c5b5741e6
Обсуждают сегодня