Rust framework for building visual/interactive applications
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

cedar 🌲

cedar is a Rust framework for building visual/interactive applications. License Build Status

Note: cedar is in the experimental stage and rapidly evolving.

Getting started!

Add the following dependency to your Cargo.toml:

cedar = { git = "" }

Example: creating buttons & reactive text 🚀


extern crate cedar;

use cedar::hypertext;

type Model = i32;

enum Message { Increment, Decrement }

fn update(model: Model, message: &Message) -> Model {
    match message {
        &Message::Increment => model + 1,
        &Message::Decrement => model - 1,

fn view(model: &Model) -> cedar::dom::Object<Message> {
    (hypertext! { |model|
            <button click={Message::Increment}> + </button>
            <button click={Message::Decrement}> - </button>

fn main() { cedar::app(0, update, view) }


A cedar application is composed of a model, update, and view - all declared up-front:

  • model: the state of our app
  • update: how to update our state based on a message (i.e. event)
  • view: how to transform our state into UI 'widgets'

This architecture is powerful, yet simple. Using a declarative approach, we can achieve impressive reactivity without having to worry about threads, locks, event routing, or view controllers.

Check out the examples!


Inspired by:

cedar is released under the MIT license.