basic_usage/
basic_usage.rs1use tushare_api::{TushareClient, TushareRequest, Api, TushareResult, params, fields};
2use std::time::Duration;
3use std::collections::HashMap;
4use std::env;
5
6#[tokio::main]
7async fn main() -> TushareResult<()> {
8 let token = env::var("TUSHARE_TOKEN")
10 .expect("请设置环境变量 TUSHARE_TOKEN");
11
12 let client = TushareClient::new(&token);
14
15 println!("=== 使用默认超时设置获取股票基本信息 ===");
16
17 let request = TushareRequest {
18 api_name: Api::StockBasic,
19 params: params!("list_status" => "L"),
20 fields: fields!["ts_code", "name", "industry", "area"],
21 };
22
23 match client.call_api(&request).await {
24 Ok(response) => {
25 if let Some(data) = response.data {
26 println!("成功获取到 {} 条记录", data.items.len());
27
28 println!("\n前10条股票信息:");
30 for (i, item) in data.items.iter().take(10).enumerate() {
31 println!("{}. {:?}", i + 1, item);
32 }
33 }
34 }
35 Err(e) => {
36 eprintln!("获取股票列表失败: {}", e);
37 }
38 }
39
40 println!("\n=== 使用自定义超时设置查询特定股票 ===");
41
42 let client_with_timeout = TushareClient::with_timeout(
44 &token,
45 Duration::from_secs(5), Duration::from_secs(60) );
48
49 let mut stock_params = HashMap::new();
50 stock_params.insert("ts_code".into(), "000001.SZ".into());
51
52 let stock_request = TushareRequest {
53 api_name: Api::StockBasic,
54 params: stock_params,
55 fields: vec![
56 "ts_code".into(),
57 "symbol".into(),
58 "name".into(),
59 "area".into(),
60 "industry".into(),
61 "list_date".into(),
62 ],
63 };
64
65 match client_with_timeout.call_api(&stock_request).await {
66 Ok(response) => {
67 if let Some(data) = response.data {
68 if let Some(item) = data.items.first() {
69 println!("找到股票信息:");
70 for (field, value) in data.fields.iter().zip(item.iter()) {
71 println!(" {}: {}", field, value);
72 }
73 } else {
74 println!("未找到该股票");
75 }
76 }
77 }
78 Err(e) => {
79 eprintln!("查询股票失败: {}", e);
80 }
81 }
82
83 Ok(())
84}