The Coinbase Pro Client for Rust is a robust library that facilitates interaction with the Coinbase Pro API . It supports synchronous (sync), asynchronous (async), and websocket-feed data operations, making it versatile for various application needs.
Features
Private and Public API : Access both private and public endpoints of the Coinbase Pro API.
Sync and Async Support : Choose between synchronous and asynchronous modes based on your application's requirements.
Websocket-feed Support : Stream real-time data through websocket connections.
Examples
To get started, add the following dependency to your Cargo.toml
:
[ dependencies ]
coinbase-pro-rs = "0.7.1"
Async Example
Using the asynchronous client with hyper and tokio:
use hyper :: rt :: Future ;
use coinbase_pro_rs ::{ Public , ASync , SANDBOX_URL };
fn main () {
let client : Public < ASync > = Public :: new_with_keep_alive ( SANDBOX_URL , false );
// If keep_alive is not disabled - tokio::run will hold the connection without exiting the example
let f = client . get_time ()
. map_err ( | _ | ())
. and_then ( | time | {
println! ( "Coinbase.time: {}" , time .iso);
Ok (())
});
tokio :: run ( f ); // waiting for tokio
}
Sync Example
Using the synchronous client:
use coinbase_pro_rs ::{ Public , Sync , SANDBOX_URL };
fn main () {
let client : Public < Sync > = Public :: new ( SANDBOX_URL );
let time = client . get_time (). unwrap ();
println! ( "Coinbase.time: {}" , time .iso);
}
Websocket Example
Streaming data through the websocket feed:
use futures ::{ Future , Stream };
use coinbase_pro_rs ::{ WSFeed , WS_SANDBOX_URL };
use coinbase_pro_rs :: structs :: wsfeed ::*;
fn main () {
let stream = WSFeed :: connect ( WS_SANDBOX_URL , &[ "BTC-USD" ], &[ ChannelType :: Heartbeat ])
. await
. unwrap ();
let f = stream
. take ( 10 )
. for_each ( | msg | {
match msg {
Message :: Heartbeat { sequence , last_trade_id , time , ..} => println! ( "{}: seq:{} id{}" ,
time , sequence , last_trade_id ),
Message :: Error { message } => println! ( "Error: {}" , message ),
Message :: InternalError ( _ ) => panic! ( "internal_error" ),
other => println! ( "{:?}" , other )
}
Ok (())
});
tokio :: run ( f . map_err ( | _ | panic! ( "stream fail" )));
}
The Coinbase Pro Client for Rust is designed to simplify the integration with Coinbase Pro, providing developers with the tools to efficiently access and manage cryptocurrency data and transactions.