Initial commit

Initial commit

Add lua template
This commit is contained in:
2024-10-01 19:24:07 +08:00
commit 29502f6816
19 changed files with 2102 additions and 0 deletions

62
posts/async-rust.md Normal file
View 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!