exp: client host and demo app using wasm/wasmtime
diff --git a/apps/client/hello/hello_rust/src/main.rs b/apps/client/hello/hello_rust/src/main.rs
new file mode 100644
index 0000000..ce372f9
--- /dev/null
+++ b/apps/client/hello/hello_rust/src/main.rs
@@ -0,0 +1,62 @@
+use wasm_bindgen::prelude::*;
+use crossterm::{
+ event::{DisableMouseCapture, EnableMouseCapture },
+ execute,
+ terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
+};
+use std::{error::Error, io};
+use tui::{
+ backend::{CrosstermBackend},
+ layout::{Alignment},
+ widgets::{Block, BorderType, Borders},
+ Terminal,
+};
+
+fn main() -> Result<(), Box<dyn Error>> {
+ enable_raw_mode()?;
+ let mut stdout = io::stdout();
+ execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
+
+ let backend = CrosstermBackend::new(stdout);
+ let mut terminal = Terminal::new(backend)?;
+ let mut i: i32 = 0;
+ loop {
+ terminal.draw(|f| {
+ let size = f.size();
+ let block = Block::default()
+ .borders(Borders::ALL)
+ .title("Main block with round corners")
+ .title_alignment(Alignment::Center)
+ .border_type(BorderType::Rounded);
+ f.render_widget(block, size);
+ })?;
+ i = i + 1;
+ if i > 1000 {
+ break;
+ }
+ }
+ // restore terminal
+ disable_raw_mode()?;
+ execute!(
+ terminal.backend_mut(),
+ LeaveAlternateScreen,
+ DisableMouseCapture
+ )?;
+ terminal.show_cursor()?;
+
+ Ok(())
+}
+
+// foo
+
+#[wasm_bindgen]
+extern "C" {
+ fn hello(s: &str);
+}
+
+struct Unused<T>(T);
+
+#[no_mangle]
+pub extern "C" fn run() {
+ Unused(main());
+}