Initial commit
Initial commit Add lua template
This commit is contained in:
62
posts/async-rust.md
Normal file
62
posts/async-rust.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Async Programming in Rust
|
||||
|
||||
Asynchronous programming in Rust allows you to write concurrent code that's both fast and safe.
|
||||
|
||||
## What is Async?
|
||||
|
||||
Async programming is about doing multiple things at once without blocking. Instead of waiting for one operation to complete before starting another, async code can switch between tasks.
|
||||
|
||||
## Key Concepts
|
||||
|
||||
### Futures
|
||||
|
||||
A `Future` represents a value that may not be available yet:
|
||||
|
||||
```rust
|
||||
async fn fetch_data() -> String {
|
||||
// Simulate async work
|
||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||
"Data fetched!".to_string()
|
||||
}
|
||||
```
|
||||
|
||||
### Async/Await
|
||||
|
||||
The `async` keyword makes a function asynchronous, and `await` pauses execution until a future is ready:
|
||||
|
||||
```rust
|
||||
async fn process_data() {
|
||||
let data = fetch_data().await;
|
||||
println!("Got: {}", data);
|
||||
}
|
||||
```
|
||||
|
||||
### Runtimes
|
||||
|
||||
Rust doesn't have a built-in async runtime. Popular choices include:
|
||||
|
||||
- **Tokio**: Full-featured runtime
|
||||
- **async-std**: Standard library approach
|
||||
- **smol**: Minimal runtime
|
||||
|
||||
## Example: Concurrent HTTP Requests
|
||||
|
||||
```rust
|
||||
use tokio::task;
|
||||
|
||||
async fn fetch_all() {
|
||||
let task1 = task::spawn(fetch_url("https://api1.example.com"));
|
||||
let task2 = task::spawn(fetch_url("https://api2.example.com"));
|
||||
let task3 = task::spawn(fetch_url("https://api3.example.com"));
|
||||
|
||||
let (result1, result2, result3) = tokio::join!(task1, task2, task3);
|
||||
}
|
||||
```
|
||||
|
||||
## Benefits
|
||||
|
||||
- **Performance**: Handle thousands of connections efficiently
|
||||
- **Resource Usage**: Lower memory and CPU usage
|
||||
- **Scalability**: Build systems that scale
|
||||
|
||||
Async Rust might seem complex at first, but it's worth learning for building high-performance applications!
|
||||
Reference in New Issue
Block a user