Skip to content

proxin187/stunt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


stunt



crates.io docs.rs GitHub License


An isomorphic web framework for Rust.

Warning

stunt is currently undergoing a large change in api and is NOT ready for production use at the moment.

Features

  • Isomorphic: Write server logic alongside client-side components, and call server logic from the client with services. Services can also integrate with foreign APIs.
  • Html Macro: Macro for writing html with rust expressions, similar to that of JSX.
  • Type checked: Compile-time type checking of components to prevent runtime bugs.

Usage

This crate is on crates.io and can be added either through adding stunt to your dependencies in Cargo.toml:

[dependencies]
stunt = "0.1.3"

Or running the following Cargo command in your project directory:

cargo add stunt

Example

More examples can be found at examples.

use stunt::prelude::*;

pub enum Message {
    Add,
}

pub struct App {
    count: usize,
}

impl Component for App {
    type Message = Message;
    type Properties = ();

    fn create() -> App {
        App {
            count: 0,
        }
    }

    fn callback(&mut self, message: &Message) {
        match message {
            Message::Add => {
                self.count += 1;
            },
        }
    }

    fn view(&self, _: ()) -> Html {
        html! {
            <div>
                <button onclick={ Message::Add } >
                    { "increment" }
                </button>
                <h1>
                    { self.count }
                </h1>
            </div>
        }
    }
}

fn main() {
    Renderer::new::<App>().render();
}

Contributing

We highly appreciate all contributions whether its a bug fix, feature, or documentation. If you encounter any bugs or otherwise weird behaviour we would really appreciate if you submitted an issue for us to look into.

License

stunt is licensed under the MIT license.