wisespace-io / binance-rs

Rust Library for the Binance API
Other
671 stars 300 forks source link

Kline summary #105

Closed ghost closed 3 years ago

ghost commented 3 years ago

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?

wisespace-io commented 3 years ago

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

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

@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?

wisespace-io commented 3 years ago

@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

ghost commented 3 years ago

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?

wisespace-io commented 3 years ago

@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.

wisespace-io commented 3 years ago
 // 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),
 }