| Crates.io | command_history |
| lib.rs | command_history |
| version | 1.1.0 |
| created_at | 2024-11-20 22:14:13.408528+00 |
| updated_at | 2024-11-23 17:25:42.915939+00 |
| description | A library for managing command history in Rust applications. |
| homepage | |
| repository | https://github.com/Psychloor/command_history |
| max_upload_size | |
| id | 1455355 |
| size | 53,774 |
This library provides a command history mechanism for managing and executing commands with undo and redo capabilities. It includes various modules and traits to facilitate the implementation of command patterns in Rust.
Arc and Mutex.concurrent_command_historyProvides a thread-safe implementation of command history.
shared_contextDefines a shared context structure that can be used across multiple commands.
simple_command_historyImplements a basic command history with undo and redo capabilities.
traitsContains the traits required for commands and command histories:
commandcommand_historymutable_commandmutable_command_historyAdd the following to your Cargo.toml to include the command_history library from crates.io:
[dependencies]
command_history = "1.0.0"
Then, you can use the library in your project as follows:
use command_history::prelude::*;
// Your command implementation and usage here
use command_history::prelude::*;
struct MyCommand {
// Command implementation
}
impl MutableCommand for MyCommand {
// Implement required methods
}
fn main() {
let mut history = SimpleCommandHistory::new(10, true);
let mut ctx = RefCell::new(0);
let command = MyCommand { /* fields */ };
history.execute_command(command, &mut ctx);
// Undo and redo operations
history.undo_command(&mut ctx);
history.redo_command(&mut ctx);
}
The library includes comprehensive tests for all modules. To run the tests, use:
cargo test
This project is licensed under either of:
Contributions are welcome! Please open an issue or submit a pull request on GitHub.