wasm object interaction test
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
((nil
|
||||||
|
(lsp-rust-features . ["wasm-bindgen"])))
|
||||||
@@ -75,6 +75,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
devShells.default = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
|
RA_LOG = "rust_analyzer=info";
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
rust-toolchain
|
rust-toolchain
|
||||||
wasm-bindgen
|
wasm-bindgen
|
||||||
|
|||||||
@@ -1,10 +1,28 @@
|
|||||||
use wasm_bindgen::prelude::*;
|
use wasm_bindgen::prelude::*;
|
||||||
|
|
||||||
|
use crate::{solver, word_list::WordList};
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
extern "C" {
|
extern "C" {
|
||||||
fn alert(s: &str);
|
fn alert(s: &str);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
pub fn greet() {
|
pub fn greet() {
|
||||||
alert("Hello, wasm-on-web!");
|
alert("Hello, wasm-on-web!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[wasm_bindgen]
|
||||||
|
struct Solver(solver::Solver);
|
||||||
|
|
||||||
|
#[wasm_bindgen]
|
||||||
|
impl Solver {
|
||||||
|
pub fn new() -> Solver {
|
||||||
|
let wl = WordList::from(["test", "yooo"].iter());
|
||||||
|
Solver(solver::Solver::from_single_word_list(wl))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn stats(&self) -> String {
|
||||||
|
self.0.tabular_format()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -16,6 +16,18 @@ pub struct WordList {
|
|||||||
words: HashSet<String>,
|
words: HashSet<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<I, S> From<I> for WordList
|
||||||
|
where
|
||||||
|
I: Iterator<Item = S>,
|
||||||
|
S: AsRef<str>,
|
||||||
|
{
|
||||||
|
fn from(value: I) -> Self {
|
||||||
|
WordList {
|
||||||
|
words: value.into_iter().map(|s| s.as_ref().to_owned()).collect(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl WordList {
|
impl WordList {
|
||||||
pub fn len(&self) -> usize {
|
pub fn len(&self) -> usize {
|
||||||
self.words.len()
|
self.words.len()
|
||||||
|
|||||||
+3
-1
@@ -5,7 +5,9 @@
|
|||||||
<title>WASM Demo</title>
|
<title>WASM Demo</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<button id="my-button">Do greet</button>
|
<button id="my-button">Test Solver</button>
|
||||||
|
|
||||||
|
<textarea id="out"></textarea>
|
||||||
|
|
||||||
<script type="module" src="/src/main.ts"></script>
|
<script type="module" src="/src/main.ts"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
+5
-2
@@ -1,7 +1,10 @@
|
|||||||
import { greet } from "wordle-solver";
|
import { Solver } from "wordle-solver";
|
||||||
|
|
||||||
const button = document.getElementById("my-button")!;
|
const button = document.getElementById("my-button")!;
|
||||||
|
const txt = document.getElementById("out")!;
|
||||||
|
|
||||||
button.addEventListener("click", () => {
|
button.addEventListener("click", () => {
|
||||||
greet();
|
var s = Solver.new();
|
||||||
|
txt.innerText = s.stats();
|
||||||
|
s.free();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user