Crates.io | command_history |
lib.rs | command_history |
version | 1.1.0 |
source | src |
created_at | 2024-11-20 22:14:13.408528 |
updated_at | 2024-11-23 17:25:42.915939 |
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_history
Provides a thread-safe implementation of command history.
shared_context
Defines a shared context structure that can be used across multiple commands.
simple_command_history
Implements a basic command history with undo and redo capabilities.
traits
Contains the traits required for commands and command histories:
command
command_history
mutable_command
mutable_command_history
Add 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.