wisespace-io / binance-rs

Rust Library for the Binance API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kline summary

opened this issue · comments

the trait bound binance::model::KlineSummaries: serde::Deserializer<'_> is not satisfied

the trait serde::Deserializer<'_> is not implemented for binance::model::KlineSummaries

note: required by serde::Deserialize::deserializerustc(E0277)
main.rs(255, 58): the trait serde::Deserializer<'_> is not implemented for binance::model::KlineSummaries

any can help me please?

@AnsterDev Is not enough just to add the Serialize, Deserialize macros?

#[derive(Debug, Serialize, Deserialize, Clone)]
pub enum KlineSummaries {    
   AllKlineSummaries(Vec<KlineSummary>),
}

@wisespace-io I have done the placing of the macros, but it appears when I modify the repository in git, the changes are not reflected in main.rs, it is as if it were the original repository, and it was blocked from changes, do you know how to solve it?

@AnsterDev Not sure what's going on in your side. Anyway, I added the macros and did not get any error. Please check the latest release 0.13.3

the macros already appear in the new update, but this appears:

 match market.get_klines(symbol, interval, limit, None, None){
        Ok(answer) => {
            let deserialized  = binance::model::KlineSummaries::deserialize(answer);
            println!("{:#?}",  deserialized);
        }
        Err(e) => println!("Error: {:?}", e),
    }
------------------------------------------------------------------------

the trait bound `binance::model::KlineSummaries: serde::Deserializer<'_>` is not satisfied

the trait `serde::Deserializer<'_>` is not implemented for `binance::model::KlineSummaries`

note: required by `serde::Deserialize::deserialize`rustc(E0277)
main.rs(285, 77): the trait `serde::Deserializer<'_>` is not implemented for `binance::model::KlineSummaries`

@wisespace-io am I doing the deserialization wrong?

@AnsterDev There is a misunderstand here. You do not need to deserializer the answer, because you already get a KlineSummary, it is not a string, it is an object. I updated the example.

 // last 10 5min klines (candlesticks) for a symbol:
 match market.get_klines("BNBETH", "5m", 10, None, None) {
     Ok(klines) => {   
         match klines {
             binance::model::KlineSummaries::AllKlineSummaries(klines) => {
                 let kline: KlineSummary = klines[0].clone(); // You need to iterate over the klines
                 println!(
                     "Open: {}, High: {}, Low: {}",
                     kline.open, kline.high, kline.low
                 )
             }
         }
     },
     Err(e) => println!("Error: {}", e),
 }