https://github.com/littledivy/rusty_esm
Example of executing ES module exports from Rust
https://github.com/littledivy/rusty_esm
deno hacktoberfest runtime rust serde v8
Last synced: about 1 year ago
JSON representation
Example of executing ES module exports from Rust
- Host: GitHub
- URL: https://github.com/littledivy/rusty_esm
- Owner: littledivy
- Created: 2021-10-08T09:05:30.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-10-15T16:47:18.000Z (over 4 years ago)
- Last Synced: 2025-05-07T14:12:28.600Z (about 1 year ago)
- Topics: deno, hacktoberfest, runtime, rust, serde, v8
- Language: Rust
- Homepage:
- Size: 62.5 KB
- Stars: 10
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## rusty_esm
This is an example showcasing a common use case for embedding Deno - calling JS
module exports from Rust. The rest is pretty self explainatory:
```rust
// main.rs
#[derive(Debug, Deserialize)]
struct ApiResponse {
user_id: isize,
id: isize,
title: String,
completed: bool,
}
let mut rt = Runtime::new("testdata/basic.js").await?;
let id = 5;
let value: ApiResponse = rt.call("getStuff", &[id]).await?;
```
```javascript
// testdata/basic.js
export async function getStuff(id) {
const r = await fetch("https://jsonplaceholder.typicode.com/todos/" + id);
return await r.json();
}
```
```sh
$ target/debug/deno_embed
ApiResponse {
user_id: 0,
id: 5,
title: "laboriosam mollitia et enim quasi adipisci quia provident illum",
completed: false,
}
```
### Benchmarks
Measured for `Runtime::call` in example scenarios. See `src/main.rs`.
```shell
test tests::bench_call ... bench: 4,429 ns/iter (+/- 1,139)
test tests::bench_call_promise ... bench: 4,609 ns/iter (+/- 306)
```
#### License
MIT