One clean split
Use Option for absence. Use Result for failure.
If nothing went wrong but a value may not exist, choose Option. If something tried to happen and can fail, choose Result.
Why this matters
A CLI always meets messy input. A user may skip an argument. A file path may be wrong. A number may not parse.
Rust makes you handle these cases before your project reaches the demo table. That is good. Your tool should print a clear message, not crash with a confusing panic.