# min / max cli programs
[](https://crates.io/crates/minmax-cli)
[](https://unlicense.org)
[](https://blog.rust-lang.org/2022/05/19/Rust-1.61.0/)
[](https://doc.rust-lang.org/nomicon/meet-safe-and-unsafe.html)
[](https://deps.rs/repo/gitlab/hsn10/minmax-cli)
[](https://crates.io/crates/minmax-cli/versions)
[](https://github.com/XAMPPRocky/tokei)
Two small Rust command‑line tools that reads numeric arguments, validates them,
and prints the value with the lowest / highest comparable magnitude.
The comparison can be done either on the raw numbers or on their absolute values.
Optionally, absolute value of selected number can be printed.
## Features
- Accepts any number of positional arguments and parses them as `f64`.
- Rejects invalid input, including:
- Non‑numeric values
- `NaN`
- `+∞` or `−∞`
- Supports selecting the minimum by **absolute value**.
- Supports **printing** absolute value of *returned* number.
- Provides version and help output.
- Returns meaningful exit codes for different error conditions.
---
## Usage
### Options
- `-v`
Print program version and exit.
- `-?`
Show help message.
- `-a`
Compare numbers by their **absolute value** instead of their raw value.
- `-A`
Print absolute value of **returned** number. Implies `-a`.
### Positional Arguments
- One or more numeric values (`f64`).
- All values must be finite and valid floating point numbers.
- If any argument fails validation, the program exits with an error code.
## Behavior
### Normal Operation
1. Parse all positional arguments as floating‑point numbers.
2. Reject any argument that:
- Cannot be parsed
- Is `NaN`
- Is infinite
3. Optionally compare all numbers by their absolute values (`-a`).
4. Find the index of the smallest / largest comparable number.
5. Print the **original** number at that index, unless (`-A`) is used.
In that case print absolute value of that number.
### Exit Codes
| `0` | Success |
| `1` | No numeric arguments provided |
| `2` | One or more arguments failed to parse or were invalid |
## Example
```
$ min 5 -3 9
-3
$ min -a 5 -3 9 1
1
$ min -a -20 34 566 -105
-20
$ min -A -20 34 566 -105
20
$ min 10 foo 2
Error parsing 'foo': invalid float literal
```
### MSRV
*min* and *max* cli programs needs Rust [version 1.61](https://blog.rust-lang.org/2022/05/19/Rust-1.61.0/).
## License
This is free and unencumbered software released into the public domain.
This code can be used under terms of [CC0-1.0](https://creativecommons.org/publicdomain/zero/1.0/) or
the [Unlicense](https://unlicense.org).

