One thing
In Rust, each value has one owner. Passing a String into a function moves ownership unless you pass a reference with &.
For your CLI, this means you should borrow text when you only need to read it. Own it when you need to store it or change it.
Why this matters
A CLI reads arguments, file paths, task names, notes, or amounts. These are often Strings. If you move them too early, you cannot use them later for printing, matching, or saving.
This is not Rust being difficult. It is Rust making memory rules visible. Once you see moves and borrows, compiler errors become useful directions.