Как напечатать будущее значение для отладки? - PullRequest
0 голосов
/ 27 мая 2018

Я недавно начал использовать фьючерсы в Rust, но не смог найти способ напечатать будущее значение для целей отладки.Я получаю эту ошибку даже с помощью помощника форматирования:

^^^^^^^^ `futures::Future<Item=hyper::Response, Error=hyper::Error>` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`

для приведенного ниже кода

#[cfg(test)]
println!(">>>>>>>> Future value returned {:?}", future);

Существует ли какое-либо существующее решение (макросы) для отладки этого?

1 Ответ

0 голосов
/ 29 мая 2018

Вы должны либо указать конкретный тип (не признак), который реализует Debug, либо вы должны полагаться на объявление impl Trait, но убедитесь, что вы также реализуете Debug.

extern crate futures;

use futures::{Future, future::FutureResult};
use std::fmt::Debug;

fn get_default_future<'s>() -> FutureResult<&'s str, ()> {
    futures::future::ok::<_, ()>("foo")
}

fn get_printable_future() -> impl Future + Debug {
    futures::future::ok::<_, ()>("bar")
}

fn main() {
    println!("{:?}", get_default_future());
    println!("{:?}", get_printable_future());
}

Сама черта не требует базовой структуры для реализации Debug.Даже если структура реализует Debug, вы должны убедиться при возврате признака вместо структуры, что вы объявляете , чтобы она реализовала Debug.Затем он должен скомпилироваться.

...