Jtomschroeder Cedar Save Abandoned

Rust framework for building visual/interactive applications

Project README

cedar :evergreen_tree:

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

crates.io 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 = "https://github.com/jtomschroeder/cedar" }

Example: creating buttons & reactive text :rocket:

#![feature(proc_macro)]
#![feature(proc_macro_non_items)]

extern crate cedar;

use cedar::hypertext;

type Model = i32;

#[derive(PartialEq)]
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|
        <div>
            <button click={Message::Increment}> + </button>
            <div>{model}</div>
            <button click={Message::Decrement}> - </button>
        </div>
    })(model)
}

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

Design

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!

Credits

Inspired by:

cedar is released under the MIT license.

Open Source Agenda is not affiliated with "Jtomschroeder Cedar" Project. README Source: jtomschroeder/cedar
Stars
135
Open Issues
8
Last Commit
4 years ago
License
MIT

Open Source Agenda Badge

Open Source Agenda Rating