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

Неправильный тип данных Rust?

Я работаю с WebSockets через библиотеку tokio-tungstenite. Мой код выглядит так
println!("Подключаемся к {}", url.bright_blue());
    let (ws_stream, _) = connect_async(url).await.expect("Не удалось подключить к WebSocket");
    println!("Подключились");

    let(mut write, mut read) = ws_stream.split();

    println!("{}", "Отправка подписки на новые транзакции".bright_blue());
    let msg = Message::Text("{\"method\": \"subscribeNewToken\"}".into());
    write.send(msg).await.expect("Не удалось отправить");
    
    if let Some(message) = read.next().await {
        let answer = serde_json::from_str(message).expect("Ошибка чтения");
    }

Мне нужно сериализовать данные от сервера, но компилятор выдает ошибку
error[E0308]: mismatched types
    --> src/main.rs:46:43
     |
46   |         let answer = serde_json::from_str(message).expect("Ошибка чтения");
     |                      -------------------- ^^^^^^^ expected `&str`, found `Result<Message, Error>`
     |                      |
     |                      arguments to this function are incorrect
     |
     = note: expected reference `&str`
                     found enum `Result<tokio_tungstenite::tungstenite::Message, tokio_tungstenite::tungstenite::Error>`

67cdb382524fe851780426.png
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
vabka
@vabka Куратор тега Rust
Мне кажется, тебе достаточно явно написали в сообщении, что тебе пришёл Result, а не str, как того ждёт serde_json.
Обработай ошибку, достань Message, и из него уже строку доставай.

Я понимаю, возможно мой вопрос глупый. Но разве сложно рассказать как это делается или дать ссылку на соотвествующие материалы. Спасибо.

Да пожалуйста) https://doc.rust-lang.org/book/ch09-02-recoverable...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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