https://github.com/schneidersteve/buckpal-rust
Rust Example Implementation of a Hexagonal/Onion/Clean Architecture
https://github.com/schneidersteve/buckpal-rust
clean-architecture dependency-injection hexagonal-architecture inversion-of-control mockall onion-architecture rust rust-analyzer rust-async salvo sqlx
Last synced: 2 months ago
JSON representation
Rust Example Implementation of a Hexagonal/Onion/Clean Architecture
- Host: GitHub
- URL: https://github.com/schneidersteve/buckpal-rust
- Owner: schneidersteve
- License: agpl-3.0
- Created: 2022-11-19T15:55:45.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-03-01T13:49:59.000Z (about 2 years ago)
- Last Synced: 2023-07-24T19:54:18.398Z (almost 2 years ago)
- Topics: clean-architecture, dependency-injection, hexagonal-architecture, inversion-of-control, mockall, onion-architecture, rust, rust-analyzer, rust-async, salvo, sqlx
- Language: Rust
- Homepage:
- Size: 192 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Rust Example Implementation of a Hexagonal/Onion/Clean Architecture
Inspired by https://github.com/thombergs/buckpal
- Kotlin Version: https://github.com/schneidersteve/buckpal-kotlin
- Dart Version: https://github.com/schneidersteve/buckpal-dart## Tech Stack
* [Rust](https://www.rust-lang.org)
* [Rust Async](https://rust-lang.github.io/async-book/)
* [Mockall](https://github.com/asomers/mockall)
* [Salvo](https://salvo.rs)
* [openssl](https://docs.rs/openssl/latest/openssl/)
* [SQLx](https://github.com/launchbadge/sqlx)
* [rust-analyzer](https://rust-analyzer.github.io)
* [Visual Studio Code](https://code.visualstudio.com)
* [Visual Studio Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-a-git-repository-or-github-pr-in-an-isolated-container-volume)## Layers and Dependency Inversion

## Send Money Use Case
```gherkin
Feature: Send MoneyScenario: Transaction succeeds
Given a source account
And a target accountWhen money is send
Then send money succeeds
And source account is locked
And source account withdrawal will succeed
And source account is releasedAnd target account is locked
And target account deposit will succeed
And target account is releasedAnd accounts have been updated
```# Cargo Examples
> cargo clean
> cargo build
> cargo test
> cargo run
> cargo install cargo-watch
> cargo watch --clear -x "run"
> cargo watch --clear -x "test"
> cargo watch --clear -x "test -- --show-output"