# [RPN-Reckoner](https://crates.io/crates/rpn-reckoner/)
DATE: Feb. 8th, 2023
This package provides a Rust library and
an executable for doing Reverse Polish Notation (: RPN) calculations.
## Library
This package's library allows for evaluating RPN expressions
by using the function `rpn_reckoner::eval(expression: String) -> Result`.
This function takes an RPN expression as a string argument and returns a result,
either the evaluated value as a float or an error message as a string.
## Installation
```
cargo add rpn_reckoner
```
### Example1
```rust
extern crate rpn_reckoner;
fn main() {
let expression = String::from("3 2 +");
let solution = rpn_reckoner::eval(expression).unwrap();
println!("{}", solution); // -> 5
}
```
### Example2
```rust
extern crate rpn_reckoner;
fn main() {
let expression = String::from("6 4 ! +");
let solution = rpn_reckoner::eval(expression).unwrap();
println!("{}", solution); // -> 30
}
```
## Read-Eval-Print Loop (: REPL)
```bash
git clone https://github.com/Rei-Ashine/rpn-reckoner.git
```
To start the REPL for evaluating RPN expressions,
the command `cargo run` should be run in the terminal.
![REPL](./PNG/RPN-Reckoner_REPL.png)
## Directory Structure
```
.
├── README.md
├── Cargo.toml
├── LICENSE
└── src
├── lib.rs
├── main.rs
├── operation.rs
└── test.rs
```
---
```
===============================================================================
Language Files Lines Code Comments Blanks
===============================================================================
TOML 1 20 17 0 3
-------------------------------------------------------------------------------
Markdown 1 46 0 29 17
|- Rust 1 16 12 0 4
(Total) 62 12 29 21
-------------------------------------------------------------------------------
Rust 4 145 105 8 32
|- Markdown 1 27 0 27 0
(Total) 172 105 35 32
===============================================================================
Total 6 211 122 37 52
===============================================================================
```
## Reference
- [『高効率言語 Rust 書きかた・作りかた』](https://www.socym.co.jp/book/1351)
![ref1](https://www.socym.co.jp/wp-content/uploads/2022/120Px_syoei-1.jpg)
## License
- [MIT](https://github.com/Rei-Ashine/rpn-reckoner/blob/main/LICENSE)