All Projects → M-Adoo → rundo

M-Adoo / rundo

Licence: other
Rundo is a undo redo library for rust which can auto generate undo op

Programming Languages

rust
11053 projects
shell
77523 projects

Projects that are alternatives of or similar to rundo

Regret
[Moved to MavenCentral] An undo-redo Android library which works with any objects and with an easy implementation. Perfect for drawing, text and photo editing apps.
Stars: ✭ 65 (+103.13%)
Mutual labels:  redo, undo
Redux Undo
♻️ higher order reducer to add undo/redo functionality to redux state containers
Stars: ✭ 2,744 (+8475%)
Mutual labels:  redo, undo
UndoRedo.js
A powerful and simple JavaScript library provides a history for undo/redo functionality. Just like a time machine! 🕐
Stars: ✭ 19 (-40.62%)
Mutual labels:  redo, undo
zundo
🍜 undo/redo middleware for zustand
Stars: ✭ 170 (+431.25%)
Mutual labels:  redo, undo
actions
Software without side-effects. Redo and Undo.
Stars: ✭ 23 (-28.12%)
Mutual labels:  redo, undo
js-undo-manager
Simple JavaScript undo/redo command manager supporting transactions with no dependencies
Stars: ✭ 23 (-28.12%)
Mutual labels:  redo, undo
undo
A undo-redo library.
Stars: ✭ 38 (+18.75%)
Mutual labels:  redo, undo
undox
⎌ Redux Implementation of Undo/Redo based on storing actions instead of states.
Stars: ✭ 25 (-21.87%)
Mutual labels:  redo, undo
undo
Gelöschte Artikel, Slices und Kategorien wiederherstellen
Stars: ✭ 31 (-3.12%)
Mutual labels:  undo
Flexibleadapter
Fast and versatile Adapter for RecyclerView which regroups several features into one library to considerably improve the user experience :-)
Stars: ✭ 3,482 (+10781.25%)
Mutual labels:  undo
MagicWE2
[MagicWE2] Lag free asynchronous world editor for PMMP with plenty of options
Stars: ✭ 109 (+240.63%)
Mutual labels:  undo

Rundo

Build Status Coverage Status

Rundo is a redo / undo library for rust which can auto generate undo op. Below is an example to use Rundo.

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

extern crate rundo;
use rundo::prelude::*;

#[rundo]
struct Point {
    x: f32,
    y: f32,
}

fn main(){

  let mut space = Workspace::new(Point! {x: 2.0, y: 2.0,});
  *space.get_mut().x = 3.0;

  // x was changed to 3.0
  assert_eq!(*space.data.x, 3.0);

  // x will undo to 2.0
  space.undo();
  assert_eq!(*space.data.x, 2.0);

  // x will redo to 3.0
  space.redo();
  assert_eq!(*space.data.x, 3.0);
}

Documents

Library API

Quick Start 2 min learn how to use Rundo.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].