Update README.md

This commit is contained in:
Ryan Leckey
2019-12-28 01:37:02 -08:00
committed by GitHub
parent dc43d3ee2f
commit 382124fe57

View File

@@ -25,6 +25,8 @@
</a>
</div>
<br />
<div align="center">
<sub>Built with ❤️ by <a href="https://launchbadge.com">The LaunchBadge team</a>
</div>
@@ -36,9 +38,37 @@ SQLx is a modern SQL client built from the ground up for Rust, in Rust.
* **Asynchronous**.
* **Native**. SQLx is a pure Rust toolkit for SQL. Where possible, drivers are written from scratch, in Rust, utilizing the modern ecosystem for asynchronous network services development.
* **Type-safe**. SQLx is built upon the novel idea of preparing SQL statements before or duing compilation to provide strong type safety while not getting in your way with a custom DSL.
## Examples
The `sqlx::query` function provides general-purpose prepared statement execution.
The result is an implementation of the `Row` trait. Values can be efficiently accessed by index or name.
```rust
let row = sqlx::query("SELECT is_active FROM users WHERE id = ?")
.bind(some_user_id)
.fetch_one(&mut conn)
.await?;
let is_active: bool = row.get("is_active");
```
The `sqlx::query!` macro prepares the SQL query and interprets the result in order to constrain input types and
infer output types. The result of `query!` is an anoymous struct (or named tuple).
```rust
let countries = sqlx::query!(
"SELECT country, COUNT(*) FROM users GROUP BY country WHERE organization = ?",
organization
)
.fetch(&mut conn) // -> impl Stream<Item = { country: String, count: i64 }>
.map_ok(|rec| (rec.country, rec.count))
.collect::<HashMap<_>>() // -> HashMap<String, i64>
.await?;
```
## Safety
This crate uses `#[deny(unsafe_code)]` to ensure everything is implemented in 100% Safe Rust.