# stock-rust
`stock-api` 的 Rust 迁移版本(异步)。
## 功能
- 统一股票代码格式:`SHxxxxxx` / `SZxxxxxx` / `HKxxxxxx` / `USxxxxxx`
- 数据源:`netease`、`tencent`、`sina`、`xueqiu`
- 统一接口:
- `get_stock(code)`
- `get_stocks(codes)`
- `search_stocks(key)`
## 使用示例
```rust
use stock_rust::{StockApi, Stocks};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let stocks = Stocks::new()?;
let one = stocks.netease.get_stock("SH510500").await?;
println!("{:?}", one);
let list = stocks
.tencent
.get_stocks(&vec!["SH510500".into(), "SZ000001".into()])
.await?;
println!("{:?}", list);
Ok(())
}
```
## 模块结构
- `src/types.rs`:`Stock` 和 `StockApi` trait
- `src/stocks/mod.rs`:统一入口 `Stocks`
- `src/stocks/base/mod.rs`:公共常量与工具函数
- `src/stocks/transforms/*.rs`:独立的 `api-code/common-code` 双向转换器 + 搜索代码转换策略
- `src/stocks/{netease,tencent,sina,xueqiu}/mod.rs`:各数据源实现
## 说明
当前环境未安装 Rust 工具链,无法在此直接执行 `cargo check`。
本地验证命令:
```bash
cargo check
cargo test
cargo run --example basic
```
联网测试(默认忽略)在 `tests/live_api.rs`:
```bash
cargo test -- --ignored
```