какую команду мне пришел коллбек, мне надо пройтись по такоме дереву
                  
                  
                  message.message.reply_to_message
                  
                  
                  
                  
                  
                  но это вся херня, это Option, поэтому надо
                  
                  
                  message.message.reply_to_message.unwrap()
                  
                  
                  
                  
                  
                  но вся эта херня лежит в куче, потому что её упаковали в std::boxed::box, поэтому надо разыменовать
                  
                  
                  
                  
                  
                  let msg = *message.message.reply_to_message.unwrap()
                  
                  
                  
                  
                  
                  но все это enum из 2-х вариантов, все их обязательно надо обработать, поэтому
                  
                  
                  let msg = *message.message.reply_to_message.unwrap();
                  
                  
                  match msg {
                  
                  
                      MessageOrChannelPost::Message(msg) => {
                  
                  
                          ....
                  
                  
                      },
                  
                  
                      MessageOrChannelPost::ChannelPost(msg) => {
                  
                  
                          ....
                  
                  
                      }
                  
                  
                  }
                  
                  
                  
                  
                  
                  Но нужная нам msg, это kind, поэтому его тоже надо распаковать
                  
                  
                  let msg = *message.message.reply_to_message.unwrap();
                  
                  
                  match msg {
                  
                  
                      MessageOrChannelPost::Message(msg) => {
                  
                  
                          if let MessageKind::Text { ref data, .. } = msg.kind {
                  
                  
                              println!("CallbackQuery {:?}", data);
                  
                  
                          }
                  
                  
                      },
                  
                  
                      MessageOrChannelPost::ChannelPost(msg) => {
                  
                  
                          ....
                  
                  
                      }
                  
                  
                  }
                  
                  
                  поздравляем, теперь у вас есть искомая строка /search@botname
                  
                  
                
нормально
Мне тож норм. В той же джаве ты бы мог, конечно, просто через . пройтись до всего этого, но пришлось бы каждый раз молиться, что NRE не получишь.
а вот как у меня: https://github.com/berkus/AeglBot/blob/rust/src/lib.rs#L113-L122
ПОЭТОМУ НАДО UNWRAP
Обсуждают сегодня