 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  вот что такое этот x в Some(x) в первой функции? если это референс, то почему я не могу сматчить его с &? если это не референс, то почему я могу его разыменовать?
меня очень запутывают а их нельзя отключить?
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  не эт фича языка
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  референсы можно матчить с паттерном &pat
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  но это не работает, как видно из второго примера
fn this_doesnt(x: &Option<u8>) -> u8 { match x { &Some(x) => x, _ => panic!(), } }
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  да, но я-то про x у него разный тип внутри паттерна и снаружи это confusing про это даже issue есть, оказыца https://github.com/rust-lang/rust/issues/64586
раньше нужно было писать ref Some(ref x) => *x
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  нет, просто Some(ref x)
Там всякое бывало
https://rust-lang.github.io/rust-clippy/master/index.html#pattern_type_mismatch это не оно случайно?
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  лол, это что, линт, чтобы запретить использовать match ergonomics в коде? ахахах
Потому что референс всё ещё относится ко всему, что находится снаружи, а эргономика работает только на то, чтобы попытаться перенести наружние ссылки вовнутрь
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  она работает для значения, но не для паттерна причём для значения только если нет модификатора mut
Да, иначе были бы проблемы с неявностью выбора при составном типе. Пиши совсем без эргономик, если не нравится, но они и так очень сильно жизнь упрощают. Это как жаловаться на lifetime elision.
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  не вижу проблем в поведении «ссылка и в паттерне, и в значении»
 Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Max
                          Силинг
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  ну, это добавило бы второй уровень ссылки
О, в егуи онлайн демо теперь поле ввода клаву и шорткаты поддерживает
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=0e89bef56db56dca8f910eff72e82219
Обсуждают сегодня