Задать вопрос
@TicSo

Как задать переменной тип с данными в зависимости от условия?

Так не даёт, пишет:
`if` and `else` have incompatible types
(имеют несовместимые типы)
let user = if json["met"] == "tb_info" {
      Res {
         met: json["met"].to_string(), 
         a: json["0"].to_string(), 
         b: json["1"].to_string(), 
         c: json["2"].to_string()
      }
   } else if json["met"] == "query" {
      User {
         met: json["met"].to_string(), 
         id: json["id"].as_u64().expect("REASON"), 
         username: json["username"].to_string(), 
         tm: json["tm"].as_f64().expect("REASON"), 
         n: json["n"].as_u64().expect("REASON")
      }   
   } else {
      ErrServ {
         met: "error_create_user".to_string()
      }
   };
  • Вопрос задан
  • 114 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
@historydev
Редактирую файлы с непонятными расширениями
if else должен возвращать один тип.
- Ты не можешь указать динамический тип переменной user.

Оборачивай свои структуры в перечисление:
enum UserRes {
Res(Res),
User(User),
ErrServ(ErrServ)
}

let user = if a == b { UserRes::Res(Res { / * ... */ }); } else { UserRes::User(User { /* ... */ }); };
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы