mirror of
https://github.com/isar/rusqlite.git
synced 2025-08-19 12:29:34 +08:00
Merge pull request #1332 from etehtsea/wasi-example
Improve wasm32-wasi support
This commit is contained in:
28
examples/persons/README.md
Normal file
28
examples/persons/README.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Persons example
|
||||
|
||||
## Run
|
||||
|
||||
```
|
||||
$ cargo run --example persons
|
||||
```
|
||||
|
||||
## Run (wasm32-wasi)
|
||||
|
||||
### Requisites
|
||||
|
||||
- [wasi-sdk](https://github.com/WebAssembly/wasi-sdk)
|
||||
- [wasmtime](https://wasmtime.dev/)
|
||||
|
||||
```
|
||||
# Set to wasi-sdk directory
|
||||
$ export WASI_SDK_PATH=`<wasi-sdk-path>`
|
||||
$ export CC_wasm32_wasi="${WASI_SDK_PATH}/bin/clang --sysroot=${WASI_SDK_PATH}/share/wasi-sysroot"
|
||||
# Build
|
||||
$ cargo build --example persons --target wasm32-wasi --release --features bundled
|
||||
# Run
|
||||
$ wasmtime target/wasm32-wasi/release/examples/persons.wasm
|
||||
Found persons:
|
||||
ID: 1, Name: Steven
|
||||
ID: 2, Name: John
|
||||
ID: 3, Name: Alex
|
||||
```
|
42
examples/persons/main.rs
Normal file
42
examples/persons/main.rs
Normal file
@@ -0,0 +1,42 @@
|
||||
extern crate rusqlite;
|
||||
use rusqlite::{Connection, Result};
|
||||
|
||||
struct Person {
|
||||
id: i32,
|
||||
name: String,
|
||||
}
|
||||
fn main() -> Result<()> {
|
||||
let conn = Connection::open_in_memory()?;
|
||||
|
||||
conn.execute(
|
||||
"CREATE TABLE IF NOT EXISTS persons (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL
|
||||
)",
|
||||
(), // empty list of parameters.
|
||||
)?;
|
||||
|
||||
conn.execute(
|
||||
"INSERT INTO persons (name) VALUES (?1), (?2), (?3)",
|
||||
["Steven", "John", "Alex"].map(|n| n.to_string()),
|
||||
)?;
|
||||
|
||||
let mut stmt = conn.prepare("SELECT id, name FROM persons")?;
|
||||
let rows = stmt.query_map([], |row| {
|
||||
Ok(Person {
|
||||
id: row.get(0)?,
|
||||
name: row.get(1)?,
|
||||
})
|
||||
})?;
|
||||
|
||||
println!("Found persons:");
|
||||
|
||||
for person in rows {
|
||||
match person {
|
||||
Ok(p) => println!("ID: {}, Name: {}", p.id, p.name),
|
||||
Err(e) => eprintln!("Error: {:?}", e),
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
Reference in New Issue
Block a user