Rust 連接器
Rust 連接器仍然在快速開發(fā)中,版本API變動在所難免,在1.0 之前無法保證其向后兼容,請使用時(shí)注意版本及對應(yīng)的文檔。
感謝 @songtianyi 對 libtdengine 的貢獻(xiàn),使Rust社區(qū)能夠使用Rust 連接TDengine. libtaos-rs 項(xiàng)目旨在為Rust開發(fā)者提供官方支持,使用taosc接口及HTTP接口構(gòu)建兼容API以便于用戶切換接口方式。
依賴
默認(rèn)情況下,libtaos-rs 使用 C 接口連接數(shù)據(jù)庫,所以您需要:
- TDengine客戶端
clang:bindgen使用libclangAST來生成對應(yīng)的Rust綁定。
特性列表
- [x] C 接口的Rust綁定
- [x] 使用
restfeature 來啟用 RESTful API. - x 連接池支持(feature
r2d2) - [ ] 迭代器接口
- [ ] 流式計(jì)算接口
- [ ] 訂閱支持
構(gòu)建和測試
cargo build
cargo test
測試使用默認(rèn)用戶名密碼和本地連接。您可以根據(jù)具體情況設(shè)置環(huán)境變量:
TEST_TAOS_IPTEST_TAOS_PORTTEST_TAOS_USERTEST_TAOS_PASSTEST_TAOS_DB
使用
使用默認(rèn)的taosc 連接方式,可以在 Cargo.toml 中直接添加 libtaos 依賴:
[dependencies]
libtaos = "v0.3.8"
添加 feature r2d2 來啟動連接池:
[dependencies]
libtaos = { version = "*", features = ["r2d2"] }
對于RESTful接口,可使用 rest 特性來替代taosc,免去安裝TDengine客戶端。
[dependencies]
libtaos = { version = "*", features = ["rest"] }
本項(xiàng)目中提供一個(gè) 示例程序 如下:
// ...
#[tokio::main]
async fn main() -> Result<(), Error> {
init();
let taos = taos_connect()?;
assert_eq!(
taos.query("drop database if exists demo").await.is_ok(),
true
);
assert_eq!(taos.query("create database demo").await.is_ok(), true);
assert_eq!(taos.query("use demo").await.is_ok(), true);
assert_eq!(
taos.query("create table m1 (ts timestamp, speed int)")
.await
.is_ok(),
true
);
for i in 0..10i32 {
assert_eq!(
taos.query(format!("insert into m1 values (now+{}s, {})", i, i).as_str())
.await
.is_ok(),
true
);
}
let rows = taos.query("select * from m1").await?;
println!("{}", rows.column_meta.into_iter().map(|col| col.name).join(","));
for row in rows.rows {
println!("{}", row.into_iter().join(","));
}
Ok(())
}
您可以在 bailongma-rs - 一個(gè) Rust 編寫的 Prometheus 遠(yuǎn)程存儲 API 適配器 - 看到如何在具體應(yīng)用中使用 Rust 連接器。

