diff --git a/docs/en/07-develop/03-insert-data/_rust_schemaless.mdx b/docs/en/07-develop/03-insert-data/_rust_schemaless.mdx
new file mode 100644
index 0000000000..a26613bd15
--- /dev/null
+++ b/docs/en/07-develop/03-insert-data/_rust_schemaless.mdx
@@ -0,0 +1,3 @@
+```rust
+{{#include docs/examples/rust/nativeexample/examples/schemaless_insert_line.rs}}
+```
diff --git a/docs/en/14-reference/03-connector/06-rust.mdx b/docs/en/14-reference/03-connector/06-rust.mdx
index ad522e9d2b..597a9b0f52 100644
--- a/docs/en/14-reference/03-connector/06-rust.mdx
+++ b/docs/en/14-reference/03-connector/06-rust.mdx
@@ -11,6 +11,7 @@ import TabItem from '@theme/TabItem';
import Preparition from "./_preparation.mdx"
import RustInsert from "../../07-develop/03-insert-data/_rust_sql.mdx"
import RustBind from "../../07-develop/03-insert-data/_rust_stmt.mdx"
+import RustSml from "../../07-develop/03-insert-data/_rust_schemaless.mdx"
import RustQuery from "../../07-develop/04-query-data/_rust.mdx"
[](https://crates.io/crates/taos)  [](https://docs.rs/taos)
@@ -232,6 +233,10 @@ There are two ways to query data: Using built-in types or the [serde](https://se
+#### Schemaless Write
+
+
+
### Query data
diff --git a/docs/examples/rust/nativeexample/examples/schemaless_insert_json.rs b/docs/examples/rust/nativeexample/examples/schemaless_insert_json.rs
new file mode 100644
index 0000000000..d5aa45016e
--- /dev/null
+++ b/docs/examples/rust/nativeexample/examples/schemaless_insert_json.rs
@@ -0,0 +1,74 @@
+use taos_query::common::SchemalessPrecision;
+use taos_query::common::SchemalessProtocol;
+use taos_query::common::SmlDataBuilder;
+
+use crate::AsyncQueryable;
+use crate::AsyncTBuilder;
+use crate::TaosBuilder;
+
+async fn put_json() -> anyhow::Result<()> {
+ // std::env::set_var("RUST_LOG", "taos=trace");
+ std::env::set_var("RUST_LOG", "taos=debug");
+ pretty_env_logger::init();
+ let dsn =
+ std::env::var("TDENGINE_ClOUD_DSN").unwrap_or("http://localhost:6041".to_string());
+ log::debug!("dsn: {:?}", &dsn);
+
+ let client = TaosBuilder::from_dsn(dsn)?.build().await?;
+
+ let db = "demo_schemaless_ws";
+
+ client.exec(format!("drop database if exists {db}")).await?;
+
+ client
+ .exec(format!("create database if not exists {db}"))
+ .await?;
+
+ // should specify database before insert
+ client.exec(format!("use {db}")).await?;
+
+ // SchemalessProtocol::Json
+ let data = [
+ r#"[{"metric": "meters.current", "timestamp": 1681345954000, "value": 10.3, "tags": {"location": "California.SanFrancisco", "groupid": 2}}, {"metric": "meters.voltage", "timestamp": 1648432611249, "value": 219, "tags": {"location": "California.LosAngeles", "groupid": 1}}, {"metric": "meters.current", "timestamp": 1648432611250, "value": 12.6, "tags": {"location": "California.SanFrancisco", "groupid": 2}}, {"metric": "meters.voltage", "timestamp": 1648432611250, "value": 221, "tags": {"location": "California.LosAngeles", "groupid": 1}}]"#
+ ]
+ .map(String::from)
+ .to_vec();
+
+ // demo with all fields
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Json)
+ .precision(SchemalessPrecision::Millisecond)
+ .data(data.clone())
+ .ttl(1000)
+ .req_id(300u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default precision
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Json)
+ .data(data.clone())
+ .ttl(1000)
+ .req_id(301u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default ttl
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Json)
+ .data(data.clone())
+ .req_id(302u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default req_id
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Json)
+ .data(data.clone())
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ client.exec(format!("drop database if exists {db}")).await?;
+
+ Ok(())
+}
diff --git a/docs/examples/rust/nativeexample/examples/schemaless_insert_line.rs b/docs/examples/rust/nativeexample/examples/schemaless_insert_line.rs
new file mode 100644
index 0000000000..3cf4d969ce
--- /dev/null
+++ b/docs/examples/rust/nativeexample/examples/schemaless_insert_line.rs
@@ -0,0 +1,78 @@
+use taos_query::common::SchemalessPrecision;
+use taos_query::common::SchemalessProtocol;
+use taos_query::common::SmlDataBuilder;
+
+use crate::AsyncQueryable;
+use crate::AsyncTBuilder;
+use crate::TaosBuilder;
+
+async fn put_line() -> anyhow::Result<()> {
+ // std::env::set_var("RUST_LOG", "taos=trace");
+ std::env::set_var("RUST_LOG", "taos=debug");
+ pretty_env_logger::init();
+
+ let dsn =
+ std::env::var("TDENGINE_ClOUD_DSN").unwrap_or("http://localhost:6041".to_string());
+ log::debug!("dsn: {:?}", &dsn);
+
+ let client = TaosBuilder::from_dsn(dsn)?.build().await?;
+
+ let db = "demo_schemaless_ws";
+
+ client.exec(format!("drop database if exists {db}")).await?;
+
+ client
+ .exec(format!("create database if not exists {db}"))
+ .await?;
+
+ // should specify database before insert
+ client.exec(format!("use {db}")).await?;
+
+ let data = [
+ "measurement,host=host1 field1=2i,field2=2.0 1577837300000",
+ "measurement,host=host1 field1=2i,field2=2.0 1577837400000",
+ "measurement,host=host1 field1=2i,field2=2.0 1577837500000",
+ "measurement,host=host1 field1=2i,field2=2.0 1577837600000",
+ ]
+ .map(String::from)
+ .to_vec();
+
+ // demo with all fields
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Line)
+ .precision(SchemalessPrecision::Millisecond)
+ .data(data.clone())
+ .ttl(1000)
+ .req_id(100u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default ttl
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Line)
+ .precision(SchemalessPrecision::Millisecond)
+ .data(data.clone())
+ .req_id(101u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default ttl and req_id
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Line)
+ .precision(SchemalessPrecision::Millisecond)
+ .data(data.clone())
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default precision
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Line)
+ .data(data)
+ .req_id(103u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ client.exec(format!("drop database if exists {db}")).await?;
+
+ Ok(())
+}
diff --git a/docs/examples/rust/nativeexample/examples/schemaless_insert_telnet.rs b/docs/examples/rust/nativeexample/examples/schemaless_insert_telnet.rs
new file mode 100644
index 0000000000..d2bbc69261
--- /dev/null
+++ b/docs/examples/rust/nativeexample/examples/schemaless_insert_telnet.rs
@@ -0,0 +1,80 @@
+use taos_query::common::SchemalessPrecision;
+use taos_query::common::SchemalessProtocol;
+use taos_query::common::SmlDataBuilder;
+
+use crate::AsyncQueryable;
+use crate::AsyncTBuilder;
+use crate::TaosBuilder;
+
+async fn put_telnet() -> anyhow::Result<()> {
+ // std::env::set_var("RUST_LOG", "taos=trace");
+ std::env::set_var("RUST_LOG", "taos=debug");
+ pretty_env_logger::init();
+ let dsn =
+ std::env::var("TDENGINE_ClOUD_DSN").unwrap_or("http://localhost:6041".to_string());
+ log::debug!("dsn: {:?}", &dsn);
+
+ let client = TaosBuilder::from_dsn(dsn)?.build().await?;
+
+ let db = "demo_schemaless_ws";
+
+ client.exec(format!("drop database if exists {db}")).await?;
+
+ client
+ .exec(format!("create database if not exists {db}"))
+ .await?;
+
+ // should specify database before insert
+ client.exec(format!("use {db}")).await?;
+
+ let data = [
+ "meters.current 1648432611249 10.3 location=California.SanFrancisco group=2",
+ "meters.current 1648432611250 12.6 location=California.SanFrancisco group=2",
+ "meters.current 1648432611249 10.8 location=California.LosAngeles group=3",
+ "meters.current 1648432611250 11.3 location=California.LosAngeles group=3",
+ "meters.voltage 1648432611249 219 location=California.SanFrancisco group=2",
+ "meters.voltage 1648432611250 218 location=California.SanFrancisco group=2",
+ "meters.voltage 1648432611249 221 location=California.LosAngeles group=3",
+ "meters.voltage 1648432611250 217 location=California.LosAngeles group=3",
+ ]
+ .map(String::from)
+ .to_vec();
+
+ // demo with all fields
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Telnet)
+ .precision(SchemalessPrecision::Millisecond)
+ .data(data.clone())
+ .ttl(1000)
+ .req_id(200u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default precision
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Telnet)
+ .data(data.clone())
+ .ttl(1000)
+ .req_id(201u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default ttl
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Telnet)
+ .data(data.clone())
+ .req_id(202u64)
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ // demo with default req_id
+ let sml_data = SmlDataBuilder::default()
+ .protocol(SchemalessProtocol::Telnet)
+ .data(data.clone())
+ .build()?;
+ assert_eq!(client.put(&sml_data).await?, ());
+
+ client.exec(format!("drop database if exists {db}")).await?;
+
+ Ok(())
+}
diff --git a/docs/zh/07-develop/03-insert-data/_rust_schemaless.mdx b/docs/zh/07-develop/03-insert-data/_rust_schemaless.mdx
new file mode 100644
index 0000000000..a26613bd15
--- /dev/null
+++ b/docs/zh/07-develop/03-insert-data/_rust_schemaless.mdx
@@ -0,0 +1,3 @@
+```rust
+{{#include docs/examples/rust/nativeexample/examples/schemaless_insert_line.rs}}
+```
diff --git a/docs/zh/08-connector/26-rust.mdx b/docs/zh/08-connector/26-rust.mdx
index eeb93a6558..d4ca25be81 100644
--- a/docs/zh/08-connector/26-rust.mdx
+++ b/docs/zh/08-connector/26-rust.mdx
@@ -10,6 +10,7 @@ import TabItem from '@theme/TabItem';
import Preparation from "./_preparation.mdx"
import RustInsert from "../07-develop/03-insert-data/_rust_sql.mdx"
import RustBind from "../07-develop/03-insert-data/_rust_stmt.mdx"
+import RustSml from "../07-develop/03-insert-data/_rust_schemaless.mdx"
import RustQuery from "../07-develop/04-query-data/_rust.mdx"
[](https://crates.io/crates/taos)  [](https://docs.rs/taos)
@@ -230,6 +231,10 @@ async fn demo(taos: &Taos, db: &str) -> Result<(), Error> {
+#### Schemaless 写入
+
+
+
### 查询数据