generic_api_usage/
generic_api_usage.rs1use tushare_api::{TushareClient, TushareRequest, Api, TushareResult, params, fields};
2use std::env;
3
4#[tokio::main]
5async fn main() -> TushareResult<()> {
6 let token = env::var("TUSHARE_TOKEN")
8 .expect("请设置环境变量 TUSHARE_TOKEN");
9
10 let client = TushareClient::new(&token);
12
13 println!("=== 使用通用 API 方法获取股票列表 ===");
14
15 let request = TushareRequest {
17 api_name: Api::StockBasic,
18 params: params!("list_status" => "L"),
19 fields: fields!["ts_code", "symbol", "name", "area", "industry", "list_date"],
20 };
21
22 let response = client.call_api(&request).await?;
24
25 println!("API 调用成功!");
26 println!("请求 ID: {}", response.request_id);
27 println!("返回码: {}", response.code);
28 if let Some(data) = response.data {
29 println!("返回字段: {:?}", data.fields);
30 println!("数据条数: {}", data.items.len());
31
32 println!("\n前5条股票记录:");
34 for (i, item) in data.items.iter().take(5).enumerate() {
35 println!("{}. {:?}", i + 1, item);
36 }
37 }
38
39 println!("\n=== 使用通用 API 方法查询特定股票 ===");
40
41 let request = TushareRequest {
43 api_name: Api::StockBasic,
44 params: params!("ts_code" => "000001.SZ"),
45 fields: fields!["ts_code", "name", "industry", "market", "list_date"],
46 };
47
48 let response = client.call_api(&request).await?;
49
50 if let Some(data) = response.data {
51 if let Some(stock_data) = data.items.first() {
52 println!("找到股票信息:");
53 for (field, value) in data.fields.iter().zip(stock_data.iter()) {
54 println!(" {}: {}", field, value);
55 }
56 } else {
57 println!("未找到该股票");
58 }
59 }
60
61 Ok(())
62}